- 締切済み
PL/SQLでの参照
PL/SQLで、複数データをLOOPで 読み込む処理を行います。 TYPE T_CHR IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER; vc_data T_CHR; FOR cur_01 IN rec_01 LOOP vc_data(1) := rec_01.SHOHIN1 vc_data(2) := rec_01.SHOHIN2 vc_data(3) := rec_01.SHOHIN3 vc_data(4) := rec_01.SHOHIN4 ・・・・・ vc_data(50) := rec_01.SHOHIN50 END LOOP; 上記のような処理をしたいのですが、vc_dataに セットする処理を、Loopでできないですか? FOR n_count IN 1..50 LOOP vc_data(n_count) := rec_01(n_count); END LOOP; のようなかんじで。。。 今は50個羅列したままです。 でも、上のような処理は、エラーでした。 rec_01は、 rec_01.SHNNO1 のように、列名を指定する以外方法はないのでしょうか? 初歩的な質問ですみませんが、よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- a_0ko8138
- ベストアンサー率0% (0/0)
質問の意図の読み違いでしたらごめんなさい。 まず、rec_01は何かのレコードなんでしょうか? ならばVARCHAR2型のvc_dataに変数代入はできないですよね? この場合vc_dataを構造体にしてあげれば変数代入できるとおもいます。こんな感じで宣言してあげれば良いのでは無いでしょうか 【例】 TYPE SHOHN_TYPE IS RECODE ( SHOHN1 VARCHAR2(30) := NULL, SHOHN2 VARCHAR2(30) := NULL, ・ ・ ・ SHOHN50 VARCHAR2(30) := NULL); TYPE t_SHOHN_TYPE IS TABLE OF SHOHN_TYPE INDEX BY BINARY_INTEGER; v_SHO_NULL t_SHOHN_TYPE; -- 初期化用 v_SHO t_SHOHN_TYPE; -- 変数代入用
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 カーソルとレコード型がいきなり登場してくるので、詳細が不明なんですが・・・、 OPEN cur_01; FOR n_count IN 1..50 LOOP FETCH cur_01 INTO rec_01; vc_data(n_count) := rec_01.SHNNO1; END LOOP; CLOSE cur_01; 絶対に50個と決まってるのなら、これでいいんじゃないかなぁ・・・? (^^ゞ