
変数が選択リストにありません
下記のコードを実行すると「変数が選択リストにありません」というエラーが出てしまいます。
SELECT文とFETCHのINTOの変数の個数が一致していない場合にこのエラーは出るということらしいのですが、問題ないように思うのです。
下記コードで何が問題になっているのか教えてください。
よろしくお願いします。
set serveroutput on;
declare
-- 各テーブルの全カラムを取得
cursor curcol (p_tblname user_tables.table_name%type) is
select COLUMN_NAME,DATA_TYPE
from user_tab_columns
where table_name = p_tblname
;
v_sql varchar2(1000); -- SQL文
v_col varchar2(1000); -- カラム名
v_val varchar2(1000); -- 取得データ
v_tblname varchar2(20); -- テーブル名
v_RstExec integer;
v_CursorID integer;
begin
v_col := '';
v_tblname := 'sample';
-- 取得テーブルのカラムを取得
for rowcol in curcol(v_tblname) loop
-- 取得カラムをCSV形式に変換
if v_col is null then
v_col := rowcol.COLUMN_NAME;
else
v_col := v_col||'||'',''||'||rowcol.COLUMN_NAME;
end if;
end loop;
dbms_output.put_line(v_col);
-- SQL作成
v_sql := 'select '||v_col||' from '||v_tblname;
v_CursorID := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_CursorID, v_sql, DBMS_SQL.NATIVE);
v_RstExec := DBMS_SQL.EXECUTE(v_CursorID);
LOOP
IF DBMS_SQL.FETCH_ROWS(v_CursorID) = 0 THEN
EXIT;
END IF;
DBMS_SQL.COLUMN_VALUE(v_CursorID, 1, v_val);
DBMS_OUTPUT.PUT_LINE(v_val);
END LOOP;
DBMS_SQL.CLOSE_CURSOR(v_CursorID);
end;
/
No.2ベストアンサー
- 回答日時:
>DBMS_SQL.PARSE(v_CursorID, v_sql, DBMS_SQL.NATIVE);
の後に
DBMS_SQL.DEFINE_COLUMN( v_CursorID, 1, v_val,1000) ;
が必要では?
回答ありがとうございます。
DBMS_SQL.DEFINE_COLUMN( v_CursorID, 1, v_val,1000) ;
追加したらエラーが出なくなりました。
ただ、テーブル内の全レコードが表示されるかと思ったのですが1件しか表示されません。
No.4
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
ストアド実行時のエラー「参照しているコレクションは初期化されていません」
Oracle
-
【PL/SQL】FROM区に変数を使う方法
Oracle
-
-
4
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
5
PL/SQLでログを確認したい。
Oracle
-
6
ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています
Java
-
7
Statement ignored というエラー
Oracle
-
8
PL/SQLで@ファイル名が反応しません
Oracle
-
9
select句副問い合わせ 値の個数が多すぎます
Oracle
-
10
単一グループのグループ関数ではありません。
Oracle
-
11
PL/SQLでSPOOLさせたいのですが、可能でしょうか?
Oracle
-
12
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
13
Oracleでの文字列連結サイズの上限
Oracle
-
14
PL/SQLカーソルの2重FORループができません
Oracle
-
15
CASE文のエラーについて
Oracle
-
16
pro*c で pl/sql に変数を渡すとora-01458発生
Oracle
-
17
不明なコマンドです(FROM")。行の残りは無視されました。 のエラー"
Oracle
-
18
PL/SQL PLS-00103エラーについて
Oracle
-
19
データを削除しても表領域の使用率が減りません
Oracle
-
20
PL/SQLでのSQL文法
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
NLS_LENGTH_SEMANTICS変更の影響
-
テーブルスペースの中身を確認...
-
変数が選択リストにありません
-
どれがPrimary Key、ForeignKey...
-
異なるサーバのDBデータ同士を...
-
既存DBのテーブル情報をCR...
-
importについて
-
テーブルの存在チェックについて
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Access又はExcelで256項目を超...
-
INSERT INTO ステートメントに...
-
Accessでテーブルからテーブル...
-
INSERTできるレコード数を制限...
-
エクセルグラフの凡例スペース
-
日本語のテーブル名、カラム名...
-
アクセス レポートのテキスト...
-
2つのテーブルを比較して一致し...
-
ワードで4段組みで文章を書い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルの存在チェックについて
-
変数が選択リストにありません
-
異なるサーバのDBデータ同士を...
-
データベース内のテーブル名の取得
-
importについて
-
Timestampの値を自動的に挿入す...
-
データがある場合のカラムの削除
-
どれがPrimary Key、ForeignKey...
-
既存DBのテーブル情報をCR...
-
Oracleのテーブル作成スクリプ...
-
Object Browser相関タブの見方...
-
PostgreSQLのカラムに"user"と...
-
NLS_LENGTH_SEMANTICS変更の影響
-
Oracle10gのテーブルをODBC経由...
-
オラクルの環境をコピーして全...
-
OracleとSQLserver間のデータ連...
-
Oracle8iでテーブルをエクスポ...
-
1ヶ月に土日は何日あるか
-
Oracleのトリガーについて
-
Pro*CでのINSERT文
おすすめ情報