【发布时间】:2015-09-12 23:06:58
【问题描述】:
我想将以下查询的输出作为输入参数传递给另一个查询。
SELECT DISTINCT MV_sum.exch
FROM LLDMA.MERCAUDIT_VOLUME_AGG_SUMMARY MV_sum,
EXCHANGE_MAPPING ex_map
WHERE MV_SUM.EXCH = ex_map.agora_exchange
ORDER BY 1;
查询 1 的示例输出:
ABC
CDE
DEF
GHI
XYX
我想将此输出一一作为输入参数传递给以下查询 将输出迭代到另一个查询
我已经编写了以下代码,因为我是 oracle 的新手,但是它抛出了一些错误 请帮我解决这个问题.....
DECLARE
exch_name VARCHAR2 (200);
v_exch VARCHAR2 (1000);
v_exch_output VARCHAR2 (4000);
v_cnt_tot VARCHAR2 (4000);
abc VARCHAR2 (4000);
v_str VARCHAR2 (4000);
CURSOR tbl
IS
SELECT DISTINCT MV_sum.exch
FROM LLDMA.MERCAUDIT_VOLUME_AGG_SUMMARY MV_sum,
EXCHANGE_MAPPING ex_map
WHERE MV_SUM.EXCH = ex_map.agora_exchange
ORDER BY 1;
BEGIN
v_cnt_tot := 0;
OPEN tbl;
LOOP
FETCH tbl INTO exch_name;
EXIT WHEN tbl%NOTFOUND;
v_str :=
' select distinct ''ICTO-10510'' , MV_sum.exch , to_char(to_date(MV_sum.TRADEDATE,''yymmdd''), ''dd-Mon-yyyy'') , '' , ''TDV'' , MV_sum.new , ''NEW'' , '' , ''-- into abc
from LLDMA.MERCAUDIT_VOLUME_AGG_SUMMARY MV_sum , EXCHANGE_MAPPING ex_map
where (TRADEDATE between TO_CHAR (sysdate-545, ''YYMMDD'') and TO_CHAR (sysdate, ''YYMMDD'') )
and MV_SUM.EXCH = ex_map.agora_exchange
and MV_sum.exch = exch_name
group by MV_sum.exch,
to_char(to_date(MV_sum.TRADEDATE, ''yymmdd''), ''dd-Mon-yyyy''),
MV_sum.new';
EXECUTE IMMEDIATE v_str;
DBMS_OUTPUT.PUT_LINE (v_str);
END LOOP;
CLOSE tbl;
END;
/
请告诉我该怎么做。
【问题讨论】:
-
您遇到什么错误?为什么要使用 EXECUTE IMMEDIATE?你也错过了 EXECUTE IMMEDIATE v_str INTO 变量;
标签: oracle plsql oracle11g oracle-sqldeveloper plsqldeveloper