PL/SQL游标定义报错Error(56,10): SQL Statement ignored求解决方案
解决方案:PL/SQL游标报错Error(56,10): PL/SQL: SQL Statement ignored
报错原因
你提供的游标定义存在语法不完整问题:WITH子句仅定义了公共表表达式(CTE)ibank_adept_table1,但未编写基于该CTE的主查询语句,Oracle无法识别完整的SQL逻辑,因此抛出"SQL Statement ignored"错误。
修复步骤
- 补充基于CTE的主查询,明确游标需要返回的数据集合
- 可选:若需使用传入的
v_sol参数,可在主查询或CTE中添加对应筛选条件
修正后的代码示例
CURSOR acct_cur (v_sol VARCHAR2) IS WITH ibank_adept_table1 as ( SELECT cost_type, amount, TO_NUMBER( case when turnover in('.','shoukeen') then null else TO_NUMBER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(turnover,'#N/A'),'N'),' '),','),CHR(9))) end ) turnover, ACCT_NUMBER FROM dailymis.IBANK_ADEPT_TABLE WHERE del_flg='N' ) -- 补充主查询,此处示例为选择CTE所有字段,可根据需求调整 SELECT cost_type, amount, turnover, ACCT_NUMBER FROM ibank_adept_table1;
额外检查点
- 确保
turnover字段经过多次REPLACE处理后,剩余内容可被TO_NUMBER正常转换,避免隐式转换错误 - 若需使用
v_sol参数,可在CTE的WHERE子句或主查询中加入对应关联条件(例如AND sol_code = v_sol,需根据实际表结构调整)
内容的提问来源于stack exchange,提问作者Prathamesh Bhagat
相关产品推荐
相关产品推荐

