私はSQLスクリプトをデプロイしなければならず、そのために1つのファイルに変数を定義し、別のファイルにスクリプトを作成しています。動的SQLのwhere句に文字列変数を渡す方法
ファイル1:
Define_Variable.sql
DEFINE hr_SCHEMA = hr;
ファイル2:
Createfile.sql
@Define_variable.sql
declare
v_str varchar2(3000);
lc_cnt number;
BEGIN
v_str :='select count(1) into l_cnt from dba_tab_cols where owner=''' || &hr_SCHEMA ||''' and TABLE_NAME=''employees''';
execute immediate v_str;
IF l_cnt = 0 then
-----perform some operations
end if;
end ;
/
私は次のエラーを取得しています。 ORA-06550
およびPLS-00201: identifier 'hr' must be declared
。 ここでは値が代入されていますが、値を引用符で囲みます。私の出力が
select count(1) into l_cnt from dba_tab_cols where owner= 'hr' and TABLE_NAME='employees';
を実行しなければならないと同じようにこれはちょうど私の大きなスクリプトの例ですが、目的は、動的SQLのwhereクエリで文字列varibleをsubstitureする方法です。
おかげトンを追加することを忘れないでください、SQL文字列内の変数を使用することができます。 –