帮助使用动态PL / SQL,函数抛出异常

时间:2011-06-09 14:59:49

标签: sql exception plsql dynamic-sql

我是PL / SQL的新手(特别是使用动态SQL),我创建了这个函数,它运行/编译时没有任何错误或警告,但是当我运行函数时......

SELECT schema.fa_awd_for_term('0000000','2003SPRING',NULL,NULL)
FROM DUAL;

....它抛出异常

1 个答案:

答案 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' - 每年一栏?!?!