0

誰でもこのエラーを手伝ってもらえますか:

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

これは、単一のパラメーターに基づいて詳細を出力しようとすると表示されます。これは私が使用しているコードです

 CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (ID_actor CHAR)
 AS
 first_name CHAR(30);
 last_name CHAR(30);
 title CHAR(40);
 year NUMBER;
 role CHAR(40);
quote CHAR(255);
CURSOR print_cursor IS
SELECT a.actorID, a.firstname, a.lastname, m.title as title, m.year as year ,  
 r.rolename as role1 , q.quotechar as quote1 FROM movie m, role r, quote q, rolequote  
rq, actor a WHERE
a.actorID = r.actorID AND
m.movieID = r.movieID AND
rq.quoteID = q.quoteID AND
rq.roleID = r.roleID;
BEGIN  
FOR row IN print_cursor LOOP
SELECT AQ.QUOTES, A.FIRSTNAME, A.LASTNAME 
FROM ACTOR_QUOTES AQ, ACTOR A
Where row.actorID = ID_actor;
END LOOP; 
END PRINT_ACTOR_QUOTES ;
/
4

1 に答える 1

1

関連するエラーは

PLS-00428:このSELECTステートメントでINTO句が必要です

(質問のタイトルで言及しているものではありません)。

問題は、FORループのSELECTステートメントです。PL / SQLでは、何もせずにデータを選択することはできません。したがって、取得したデータをPL/SQL変数に格納するにはINTO文が必要です。

SELECT AQ.QUOTES, A.FIRSTNAME, A.LASTNAME
  INTO quote, first_name, last_name
FROM ACTOR_QUOTES AQ, ACTOR A
Where row.actorID = ID_actor;

次に、いくつかの追加の問題を見つけることができます。

  • SELECTステートメントは完全外部結合のようですが、これが必要になることはめったにありません。
  • INTO句を含むSELECTステートメントは、複数の行を返す場合は失敗します。
  • 反復ごとにローカル変数を上書きし、それらを何もしない場合のFORループの目的は何ですか。
于 2012-05-03T13:35:58.523 に答える