2012-08-26 89 views
-1

當試圖創建該存儲過程,我發現了一個錯誤:錯誤在Oracle存儲過程

PLS-00428: an INTO clause is expected in this SELECT statement

代碼:

CREATE OR REPLACE PROCEDURE FindDb(
     P_BookId IN BOOKMASTER.BookId%TYPE, 
     p_PublisherCode OUT BOOKMASTER.PUBLISHERCODE%TYPE, 
     p_ISBNCode OUT BOOKMASTER.ISBNCODE%TYPE, 
     p_BookName OUT BOOKMASTER.BOOKNAME%TYPE, 
    p_BookType OUT BOOKMASTER.BOOKTYPE%TYPE, 
    p_BookLevel OUT BOOKMASTER.BOOKLEVEL%TYPE, 
    p_BookCategory OUT BOOKMASTER.BOOKCATEGORY%TYPE, 
    p_AuthorNames OUT BOOKMASTER.AUTHORNAMES%TYPE, 
    p_PublishedYear OUT BOOKMASTER.PUBLISHEDYEAR%TYPE, 
    p_CostPrice OUT BOOKMASTER.COSTPRICE%TYPE, 
    p_MRP OUT BOOKMASTER.MRP%TYPE, 
    p_BookImage OUT BOOKMASTER.BOOKIMAGE%TYPE) 
AS 
BEGIN 

    SELECT PUBLISHERCODE, ISBNCODE, BOOKNAME,BOOKTYPE,BOOKLEVEL,BOOKCATEGORY 
,AUTHORNAMES,PUBLISHEDYEAR,COSTPRICE,MRP,BOOKIMAGE 
    FROM BOOKMASTER WHERE BOOKID = p_BookId; 

END FindDb; 
/
+0

歡迎StackOverflow上:如果您發佈的代碼,XML或數據樣本,** **請在高亮文本編輯器這些線路上,並點擊編輯器中的「代碼示例」按鈕('{}')工具欄以很好的格式和語法突出顯示它! –

+3

你的問題是什麼?你還沒有INTO條款 - 你需要一個! – FJT

+0

你想在這個程序中實現什麼? –

回答

1

它看起來像你期待的Oracle存儲過程以與SQL Server SP相同的方式工作 - 它們是不同的 - 在Oracle中,您需要選擇INTO變量或遊標,然後對值執行一些操作。如果你只是想在SQL服務器中選擇這些值,它不會像那樣工作。

3

在Oracle存儲過程中,我們必須將值選擇到變量或輸出參數中。請read the docs

嘗試按照以下方式創建您的存儲過程。

CREATE OR REPLACE PROCEDURE finddb (
    p_bookid   IN bookmaster.bookid%TYPE, 
    p_publishercode  OUT bookmaster.publishercode%TYPE, 
    p_isbncode    OUT bookmaster.isbncode%TYPE, 
    p_bookname    OUT bookmaster.bookname%TYPE, 
    p_booktype    OUT bookmaster.booktype%TYPE, 
    p_booklevel    OUT bookmaster.booklevel%TYPE, 
    p_bookcategory  OUT bookmaster.bookcategory%TYPE, 
    p_authornames   OUT bookmaster.authornames%TYPE, 
    p_publishedyear  OUT bookmaster.publishedyear%TYPE, 
    p_costprice    OUT bookmaster.costprice%TYPE, 
    p_mrp     OUT bookmaster.mrp%TYPE, 
    p_bookimage    OUT bookmaster.bookimage%TYPE 
) 
AS 
BEGIN 
    SELECT publishercode, 
       isbncode, 
       bookname, 
       booktype, 
       booklevel, 
       bookcategory, 
       authornames, 
       publishedyear, 
       costprice, 
       mrp, 
       bookimage 
     INTO p_publishercode, 
       p_isbncode, 
       p_bookname, 
       p_booktype, 
       p_booklevel, 
       p_bookcategory, 
       p_authornames, 
       p_publishedyear, 
       p_costprice, 
       p_mrp, 
       p_bookimage 
     FROM bookmaster 
    WHERE bookid = p_bookid; 
END finddb; 
/