我是PL / SQL的新手(特别是使用动态SQL),我创建了这个函数,它运行/编译时没有任何错误或警告,但是当我运行函数时......
SELECT schema.fa_awd_for_term('0000000','2003SPRING',NULL,NULL)
FROM DUAL;
....它抛出异常
答案 0 :(得分:1)
删除EXCEPTION处理程序,您将发现错误实际上是什么。您不应该明确处理意外的异常。
最好使用绑定变量,例如改变这个:
|| 'substr(ta_xxxx_id,1,7) = ''sssssss'' '
|| 'and substr(ta_xxxx_id,instr(ta_xxxx_id,''*'',1,2)+1) = ''aaaa'' '
到
|| 'substr(ta_xxxx_id,1,7) = :sssssss '
|| 'and substr(ta_xxxx_id,instr(ta_xxxx_id,''*'',1,2)+1) = :aaaa '
然后在OPEN语句中添加一个USING子句:
OPEN CUR_faawards FOR thequery USING id, v_year;
并删除这些的REPLACE代码。我担心你会因为糟糕的桌面设计而陷入'xxxx' - 每年一栏?!?!