2011-07-28 9 views
4

私はOracle 10gを使用しており、のSELECT句で変数を使用する必要があります。SELECT;例えば。SELECTステートメントで宣言された変数を使用する

DECLARE 
v_blah NUMBER; 
BEGIN 

v_blah := 13; 

SELECT * FROM PEOPLE p WHERE p.LuckyNumber = v_blah; 

END; 

しかし

PLS-00428を言って、エラーを取得しています:INTO句このSELECT文

に期待されていることは、DELETEまたはINSERT文で正常に動作するよう、なぜ私はここでうまくいかないのか分かりません。

+0

私はそれがうまくいくはずです:( – War

+2

オラクルへようこそ。これはSQL Serverではありません;-) –

答えて

3

正しい構文は次のとおりです。

DECLARE 
    v_blah NUMBER := 13; 
    v_people_rec PEOPLE%ROWTYPE; 
BEGIN 
    SELECT * INTO v_people_rec FROM PEOPLE p WHERE p.LuckyNumber = v_blah; 
END; 

select statement in PL/SQLがクエリの結果を格納場所が必要です。この例では、場所はv_people_recです。

上記の例では、という行がちょうど1行が返されると想定しています。それ以外の場合は、例外NO_DATA_FOUNDまたはTOO_MANY_ROWSがスローされます。

3

これはパラメータとは関係ありません。コードを手続き型ブロックとして実行しているため、何も選択しないようにするためです。

クエリの結果はどうしますか?それを画面に表示しますか?その場合は、カーソルに合​​わせて選択し、反復してdbms_outputを使用します。

+0

私は行を戻したいと思います。これは、より大きな挿入の一部であり、次に挿入された行タイプの問合せを戻します。 – Jacob

+2

その場合、結果をカーソルに選択する必要があります。 – DoctorMick

関連する問題