-1

このストアド プロシージャを作成しようとすると、エラーが発生します。

PLS-00428: このSELECT文にはINTO句が必要です

コード:

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;
/
4

2 に答える 2

3

Oracleストアドプロシージャでは、変数またはパラメータのいずれかに値を選択する必要があります。ドキュメントをお読みください。

次の方法でストアドプロシージャを作成してみてください。

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;
/
于 2012-08-26T11:47:40.533 に答える
1

OracleストアドプロシージャがSQL Server SPと同じように機能することを期待しているようです-それらは異なります-Oracleでは、INTO変数またはカーソルを選択してから値を操作する必要があります。SQL サーバーのように値を選択しようとしているだけでは、そのようには機能しません。

于 2012-08-26T11:31:11.953 に答える