重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PL/SQLにて、カーソル名を変数にしたいのですが、どうすればよいのでしょうか?
具体的には以下のとおりです。

DECLARE
CURSOR Cur1 IS
SELECT K1,K2 FROM EMP;

BEGIN
FOR Cur_Rec1 IN Cur1
    Cur_Rec1.K1
DBMS_OUTPUT.PUT_LINE(Cur_Rec1.K1); ★
END LOOP;
END;

★の部分の「Cur_Rec1.K1」を「Cur_Rec1.K2」として、置き換えて使用したいのです。(2回書きたくない)
初心者で、申し訳ないです。どうか、ご教授ください。

A 回答 (1件)

>★の部分の「Cur_Rec1.K1」を「Cur_Rec1.K2」として、置き換えて使用したいのです。

(2回書きたくない)

その目的は、コーディング量を押さえることにあるんでしょうか?
そうであるなら、2行書くのが最良の方法です。

一応、PL/SQLでは、動的なカーソルの扱いもできますが、
OCI呼び出しと同じレベルの面倒な方法を採らねば成りません。
詳しく知りたいのであれば、PL/SQLパッケージリファレンスの
DBMS_SQLというモノを調べてください。
フィールド名、データ属性不明なモノに対し、アクセス可能です。
ただし、フィールド参照だけを書き換えるのは出来ません。
カーソルの取り扱いを含め、DBMS_SQLによる動的操作に変える必要があります。

一般的には、ユーティリティのような汎用ツールを書くときくらいしか
使い道がないパッケージかと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>その目的は、コーディング量を押さえることにあるんでしょうか?

そうですね。項目が50項目あり、項目名がうしろに'_数値'となるもので、for文かなにかで処理できないかと思いました。

地道に書きます。ありがとうございました。

お礼日時:2005/09/28 16:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す