EXECUTE IMMEDIATEコマンドを使用してクエリを作成し、ネストされたクエリ内で計算した2つの値を合計する必要があります。私は、USING節や他の節を使用する必要があるかどうか、作成した変数をステートメントに入れる方法を知りたいと思います。問合せは次のとおりです。PL/SQLのEXECUTE IMMEDIATE文に外部変数を使用する方法はありますか?
編集:これは新しい問合せです。バインディング変数(Ora-01008:すべての変数がバインドされているわけではありません)には依然として問題があります。この問題で私を助けてくれますか?
EXECUTE IMMEDIATE 'SELECT sum (n_record_trovati_p) FROM (
SELECT count(*) as n_record_trovati_p FROM od_pv_trading_day_orders partition (' || partition_current_month || ') WHERE DATETIME = :1 AND orderid = :2 AND broker = :3
UNION
SELECT count(*) as n_record_trovati_p FROM od_pv_trading_day_orders partition (' || partition_previous_month || ') WHERE DATETIME = :1 AND orderid = :2 AND broker = :3
)' INTO n_record_trovati
USING d_datetime, n_orderid, cur.broker;
//old query
sys_current_date VARCHAR2 (7);
sys_previous_date VARCHAR2 (7);
partition_current_month VARCHAR2 (8);
partition_previous_month VARCHAR2 (8);
BEGIN
...
SELECT TO_CHAR(ADD_MONTHS(d_datetime,0),'yyyymm') INTO sys_current_date FROM dual;
SELECT TO_CHAR(ADD_MONTHS(d_datetime,-1),'yyyymm') INTO sys_previous_date FROM dual;
partition_current_month := 'P'|| sys_current_date;
partition_previous_month := 'P'|| sys_previous_date;
EXECUTE IMMEDIATE 'SELECT SUM (found_records) INTO ' || n_record_trovati || ' FROM (
SELECT COUNT(*) as found_records FROM example_table PARTITION (' || partition_current_month || ') WHERE DATETIME = ' || d_datetime || ' AND orderid = ' || n_orderid || ' AND broker = ' || cur.broker || '
UNION
SELECT COUNT(*) as found_records FROM example_table PARTITION (' || partition_previous_month || ') WHERE DATETIME = ' || d_datetime || ' AND orderid = ' || n_orderid || ' AND broker = ' ||cur.broker || '
)';
...
end
実行可能な即値ストリングの残りの部分から変数名を||エラーがポップアップします。クエリに何が間違っているのか教えてください。どうすれば修正できますか?ありがとう
エラーは何ですか? –
コンパイルエラーがなくても「表現がありません」 – Anacarnil