- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数が選択リストにありません)
変数が選択リストにありません
このQ&Aのポイント
- 変数が選択リストにありませんというエラーが出る理由について説明してください。
- SELECT文とFETCHのINTOの変数の個数が一致していない場合にエラーが発生します。
- 今回のコードでは、カーソルのFETCH時に変数の個数が一致していないため、エラーが出る可能性があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>DBMS_SQL.PARSE(v_CursorID, v_sql, DBMS_SQL.NATIVE); の後に DBMS_SQL.DEFINE_COLUMN( v_CursorID, 1, v_val,1000) ; が必要では?
その他の回答 (3)
- SaKaKashi
- ベストアンサー率24% (755/3136)
回答No.4
マニュアル http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-02/d_sql.htm#BABDJEBE によると2/の方のようにDEFINE_COLUMNが必要のようですけど。
質問者
お礼
回答ありがとうございます。 declare部分だけに宣言すればいいのかと思っていました。
- yamada_g
- ベストアンサー率68% (258/374)
回答No.3
#2です。連続ですみません。 user_tab_columnsのtable_nameには大文字で格納されているはずなので、 'sample'ではなく'SAMPLE'とするべきではないでしょうか。 まぁ、'sample'のままだったら >DBMS_SQL.PARSE( の時点でエラーになるでしょうから修正済みなのかもしれませんが。
質問者
お礼
ご指摘ありがとうございます。 ご指摘のとおり、サンプルコードのためテーブル名を小文字にしてしまいましたが、実際のソースでは大文字にしてあります。
- SaKaKashi
- ベストアンサー率24% (755/3136)
回答No.1
v_colとv_sqlはどうなってますか?
質問者
お礼
回答ありがとうございます。 v_colが sample_id||','||sample_name v_sqlが select sample_id||','||sample_name from sample v_sqlの値をコピペして単独で実行しても問題ありませんでした。
お礼
回答ありがとうございます。 DBMS_SQL.DEFINE_COLUMN( v_CursorID, 1, v_val,1000) ; 追加したらエラーが出なくなりました。 ただ、テーブル内の全レコードが表示されるかと思ったのですが1件しか表示されません。