2012-04-02 56 views
0

我正在嘗試在庫數據庫上創建一個存儲過程,主要用於練習。無法讓MySQL查詢工作

但它讓我感到困惑。我使用這個查詢來創建過程,並且它說它正在工作,但是當我然後調用過程時,它說這個過程不存在。注意:我在不在本地主機上的Web數據庫上使用phpmyadmin。

delimiter $$ 
create procedure BorrowBook(in theBookID, in theUserID) 
begin 
declare lim int; 
declare num int; 
declare loanNumber int; 
declare copyNumber int; 
set lim = (select Readers.Limit from Readers where Readers.id = theUserID); 
set num = (select Count(*) from Loans where Loans.UserID = theUserID); 
set loanNumber = (select Count(*) from Loans) + 1; 
set copyNumber = (select NumberAvailable from Book where Book.id = theBookID); 
if(copyNumber > 0) 
if(num<lim) 
then 
--Add a Loan to the Loans Table 
insert into Loans values(loanNumber, theBookId, theUserID, curDate(), 0); 
commit; 
update Book set Book.NumberAvailable = Book.NumberAvailable - 1 where Book.id = theBookID; 
select 'Succesful Update'; 
else 
rollback; 
select 'Borrow limit reached'; 
end if; 
else 
rollback; 
select 'No copies available'; 
end; 
delimiter ; 

回答

2

你缺少$$最後end後:

delimiter $$ 
... 
end; $$ <-- add $$ here 
delimiter ; 
+0

現在談到了這一點錯誤:#1064 - 你有一個您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'用戶ID'附近使用正確的語法)begin declare lim int; declare num int;在第1行申報貸款號碼 除此之外的代碼中是否還有實際的錯誤可以看到? – 2012-04-02 12:57:37

+1

嘗試指定像'inUserID INT'這樣的參數的類型。 – 2012-04-02 13:28:22

0

它不應該是

end; $$ 
delimiter ; 

,而不是

end; 
delimiter ;