2016-10-13 13 views
0

を投げている:Selectステートメントは、このステートメントはエラーを投げているエラー

FOR _i2 IN 1 .. array_upper(p_extra_info, 1) LOOP 
    .... 
    SELECT currval('ad_extra_info_id_seq') INTO _new_extra_info_ids[_i2]; 
    .... 
END LOOP; 

ERROR: syntax error at or near "[" 
LINE 179: ...rrval('ad_extra_info_id_seq') INTO _new_extra_info_ids[_i2]; 
                   ^
********** Error ********** 

ERROR: syntax error at or near "[" 
SQL state: 42601 
Character: 7907 

変数_new_extra_info_idsは、このように宣言されています。_new_extra_info_ids integer[];

あなたは間違っているものを知っていますか?

+0

まず1つの勧告は特殊文字で、私は、コンパイラが命名規則のこの種の混乱に直面いくつかの回を開始する任意の変数名を宣言しないでください。 –

+0

私は区別のためにすべての宣言された変数の前に '_'を付けました。 @a_horse_with_no_nameが動作します、ありがとうございます。 –

+1

ループの_might_のようなことは、あなたの関数内のセットの非効率的な処理を示しています。あなたはその論理を再訪したいかもしれませんが、本当にそれを言うには十分な情報がありません。しかし、ループの中で '選択 'を見ることは、通常私のために警鐘を鳴らします。 –

答えて

1

ではなく、選択の直接代入を使用します。

FOR _i2 IN 1 .. array_upper(p_extra_info, 1) LOOP 
    .... 
    _new_extra_info_ids[_i2] := currval('ad_extra_info_id_seq'); 
    .... 
END LOOP; 
関連する問題