【发布时间】:2015-09-24 19:57:45
【问题描述】:
我想在 where 子句中将 exch_name 传递给主查询 但它给出了错误
ORA-01403: no data found
问题 2:
出于测试目的,我传递了硬编码值而不是 exch_name
MV_sum.exch = 'ASX' 但它给出错误
ORA-01422: exact fetch returns more than requested number of rows
请指导我...
DECLARE
exch_name VARCHAR2(200);
v_exch VARCHAR2(1000);
output VARCHAR2(4000);
abc VARCHAR2(4000);
v_str VARCHAR2(4000);
err_code VARCHAR2 (4000);
err_msg VARCHAR2 (4000);
CURSOR tbl IS
SELECT DISTINCT MV_sum.exch
into exch_name
FROM LLDMA.MERCAUDIT_VOLUME_AGG_SUMMARY MV_sum,
EXCHANGE_MAPPING ex_map
WHERE MV_SUM.EXCH = ex_map.agora_exchange
ORDER BY 1;
BEGIN
DBMS_OUTPUT.PUT_LINE (exch_name);
for x in tbl loop
EXIT WHEN tbl%NOTFOUND;
select '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 = 'ASX' ---Passing hardcoded value for testing
--and MV_sum.exch = exch_name --If I uncomment this "ORA-01403: no data found"error is coming
group by MV_sum.exch,
to_char(to_date(MV_sum.TRADEDATE, 'yymmdd'), 'dd-Mon-yyyy' ),
MV_sum.new;
EXECUTE IMMEDIATE abc into output;
DBMS_OUTPUT.PUT_LINE (output);
end loop;
EXCEPTION
WHEN OTHERS THEN
err_code := SQLCODE;
err_msg := SUBSTR(SQLERRM, 1, 200);
DBMS_OUTPUT.PUT_LINE (err_code || err_msg);
END;
【问题讨论】:
-
需要查看您的数据才能真正提供帮助,这些消息暗示数据不是您所期望的
-
正如@davegreen100 所说,在不知道您的数据是什么的情况下很难提供帮助。一些cmets:1)“NEW”应该是“NEW”; 2) 你写了
EXECUTE IMMEDIATE abc,但看起来abc不会包含有效的SQL 语句; 3)您将光标提取到名为x的行变量中,但是您永远不会在任何地方使用结果。我想需要问的问题是你想在这里完成什么? -
你确定查询 "select 'ICTO-10510' ||','|| MV_sum.exch ||','|| to_char(to_date(MV_sum.TRADEDATE, 'yymmdd'), 'dd-Mon-yyyy') || ','|| ''||','|| 'TDV' ||','|| MV_sum.new ||','|| "NEW" || ' ,'|| '' || ','|| '' into abc ..." 总是为游标中的每条记录返回一行?
标签: oracle plsql oracle11g oracle10g