• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数が選択リストにありません)

変数が選択リストにありません

このQ&Aのポイント
  • 変数が選択リストにありませんというエラーが出る理由について説明してください。
  • SELECT文とFETCHのINTOの変数の個数が一致していない場合にエラーが発生します。
  • 今回のコードでは、カーソルのFETCH時に変数の個数が一致していないため、エラーが出る可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

>DBMS_SQL.PARSE(v_CursorID, v_sql, DBMS_SQL.NATIVE); の後に DBMS_SQL.DEFINE_COLUMN( v_CursorID, 1, v_val,1000) ; が必要では?

shaka001
質問者

お礼

回答ありがとうございます。 DBMS_SQL.DEFINE_COLUMN( v_CursorID, 1, v_val,1000) ; 追加したらエラーが出なくなりました。 ただ、テーブル内の全レコードが表示されるかと思ったのですが1件しか表示されません。

その他の回答 (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が必要のようですけど。

shaka001
質問者

お礼

回答ありがとうございます。 declare部分だけに宣言すればいいのかと思っていました。

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3

#2です。連続ですみません。 user_tab_columnsのtable_nameには大文字で格納されているはずなので、 'sample'ではなく'SAMPLE'とするべきではないでしょうか。 まぁ、'sample'のままだったら >DBMS_SQL.PARSE( の時点でエラーになるでしょうから修正済みなのかもしれませんが。

shaka001
質問者

お礼

ご指摘ありがとうございます。 ご指摘のとおり、サンプルコードのためテーブル名を小文字にしてしまいましたが、実際のソースでは大文字にしてあります。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

v_colとv_sqlはどうなってますか?

shaka001
質問者

お礼

回答ありがとうございます。 v_colが sample_id||','||sample_name v_sqlが select sample_id||','||sample_name from sample v_sqlの値をコピペして単独で実行しても問題ありませんでした。