- - PR -
FETCHして取得する列を 動的に設定したいが・・・・
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2006-11-15 17:47
いつもお世話になっております
user_tab_columns から ある特定のテーブル(a テーブル)の 項目名と項目タイプ、長さ、項目数を 取得した状態で 項目タイプ別に 配列に格納したいのです 行を配列に入れる方法は たくさん 見かけるのですが 無謀なのでしょうか? テーブル内にデータも入っているけど データが無いというエラーが 消せません (;_;) type tarrayretu_x is table of varchar2(255) index by binary_integer; type tarrayretu_n is table of number index by binary_integer; itm_x tarrayretu_x; itm_n tarrayretu_n; cid integer := dbms_sql.open_cursor; sqlstr := 'select itm1,itm2,itm3 from a'; itm_cnt integer := 3; begin dbms_sql.parse(cid, sqlstr, dbms_sql.native); for i in 1 .. itm_cnt loop if instr(pal_type(i),'char') > 0 then dbms_sql.define_column(cid, i, itm_x(i), pal_leng(i)); ----> ORA-01403: データが見つかりません エラーになる else dbms_sql.define_column(cid, i, itm_n(i), 16); end if; end loop; ret := dbms_sql.execute(cid); loop if dbms_sql.fetch_rows(cid) < 1 then exit; else for i in 1 .. itm_cnt loop if instr(pal_type(i),'char') > 0 then dbms_sql.column_value(cid, i, itm_x(i)); else dbms_sql.column_value(cid, i, itm_n(i)); end if; end loop; end if; end loop; [ メッセージ編集済み 編集者: 七 編集日時 2006-11-15 17:48 ] [ メッセージ編集済み 編集者: 七 編集日時 2006-11-15 18:56 ] |
|
投稿日時: 2006-11-15 20:40
すみません 解決しました
dbms_sql.define_column(cid, i, itm_x(i), pal_leng(i)); この行の前に itm_x(i) := NULL; のヌル クリアする行を1行入れたら うまくいきました 理由は よく わかりません が とりあえず・・・ |
1
