2011-06-09 49 views
0

我對PL/SQL(特別是使用動態SQL)頗爲陌生,我創建了這個函數,它運行/編譯沒有任何錯誤或警告,但是當我運行功能....幫助使用動態PL/SQL,函數拋出異常

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

....它拋出一個異常

回答

1

取出異常處理程序,你會發現什麼錯誤實際上是。你不應該明確地處理意外的異常。

也可以使用綁定變量例如更改此設置:

|| '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 ' 

然後添加一個using子句的OPEN語句:

OPEN CUR_faawards FOR thequery USING id, v_year; 

並刪除代碼替換這些。恐怕你因爲糟糕的桌面設計而被'xxxx'卡住了 - 每年都會有一列?!?!

+0

是的,我知道:(這是設計不佳,我會嘗試這些建議,並回到你的。謝謝你的提示 – Dan 2011-06-09 15:12:34

+0

好吧,我試着移動底部異常(它返回'ER2'),和我得到一個ora-06512,未處理的異常,並且它上面的錯誤是「表或視圖不存在(我已經仔細檢查過我的表名是否準確)這是否給這個問題提供任何提示? – Dan 2011-06-09 15:22:55

+0

它可能是任何但是我懷疑會以ta_xxxx表開始,嘗試添加一些調試消息,例如使用dbms_output.put_line。 – 2011-06-09 15:32:47