0
既存のオブジェクトではない(テーブルは存在しません) ここはコードの一部です(テーブルとカラムの汎用名を使用しています) ):私は、テーブル「MY_TABLE」は存在しないため、動的にこの文を書く方法を知らない動的SQL - ORACLE
DECLARE
C INTEGER := 0;
BEGIN
SELECT COUNT(1) INTO C FROM USER_TABLES WHERE TABLE_NAME = 'MY_TABLE';
IF C > 0 THEN
DECLARE
CURSOR c_maps IS SELECT COLUM_NAME1, COLUM_NAME2 FROM MY_TABLE WHERE ACTIVE = 1;
BEGIN
FOR prec IN c_maps LOOP
some code...;
END LOOP;
EXECUTE IMMEDIATE 'some code..';
END;
END IF;
END;
/
:
:CURSOR c_maps IS SELECT COLUM_NAME1, COLUM_NAME2 FROM MY_TABLE WHERE ACTIVE =1;
を私もそれが好き書き込もうとしました
CURSOR c_maps IS SELECT COLUM_NAME1, COLUM_NAME2 FROM (Select 'MY_TABLE' from dual) WHERE ACTIVE = 1;
しかし、これはコンパイル時にも存在しない "ACTIVE"という列を参照しています... "execute immediate"ブロック内にすべての手順を記述することは可能ですか?ただし、別のバリアントを試してみましたが、成功しませんでした。
列リストを作成するカーソルは、動的実行の一部でなければなりません。ダイナミック実行の2つのレイヤーがネストされています...理解してデバッグする悪夢。既存のスキーマに対してコード化する方法はありませんか? – dlatikay