Oracle存盤程序中EXECUTE IMMEDIATE 執行結果是空時怎么繼續執行?
EXECUTE IMMEDIATE P_SQL_QUERY INTO P_NUM;
P_SQL_QUERY里邊是select count(1) from t
p_num 定義的是number型別,現在存盤程序執行報錯,因為P_SQL_QUERY執行的結果是null,現在不知道怎么處理了,其實我只想要P_SQL_QUERY的結果不是空的那些,但是由于有空的,導致報錯不能繼續執行,請大神指點!!!
uj5u.com熱心網友回復:
count沒有資料也是0,你后面有having吧uj5u.com熱心網友回復:
P_SQL_QUERY里面有group by嗎,如果有的話且欄位有空值的話會是null。建議先在where后面先把null過濾掉uj5u.com熱心網友回復:
沒有having,就是判斷表里有沒有資料,然后放入變數,進行后續的操作,現在是如果表里沒有資料到這里就報錯EXECUTE IMMEDIATE P_SQL_QUERY INTO P_NUM;
uj5u.com熱心網友回復:
沒有group不用,只有一個count(1)查詢資料庫里每個表是否有資料
uj5u.com熱心網友回復:
有知道怎么處理的嗎uj5u.com熱心網友回復:
動態SQL既然無論如何不能為空,那么代碼多一步判斷,如果為空,將P_SQL_QUERY賦值為一個無意義的可執行SQL,后續針對這種情況下的p_num也多個判斷即可。uj5u.com熱心網友回復:
2個方案:1、用NVL,將NULL,處理成您需要的值。
2、增加例外處理,保證那段代碼即使出了問題,也可以繼續執行下去,不要讓它斷掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/34729.html
標籤:高級技術
上一篇:求oracle一個存盤程序
下一篇:oracle怎么日期查詢
