【发布时间】:2011-11-06 14:01:57
【问题描述】:
我有以下代码
SELECT SUM(nvl(book_value,
0))
INTO v_balance
FROM account_details
WHERE currency = 'UGX';
--Write the balance away
SELECT SUM(nvl(book_value,
0))
INTO v_balance
FROM account_details
WHERE currency = 'USD';
--Write the balance away
现在的问题是,表格中可能没有该特定货币的数据,但可能有“美元”货币的数据。所以基本上我想将总和选择到我的变量中,如果没有数据,我希望我的存储过程继续并且不抛出 01403 异常。
我也不想将每个 select 放入 BEGIN EXCEPTION END 块中的语句中,所以有什么方法可以抑制异常并将 v_balance 变量保持在未定义(NULL)状态而不需要异常块?
【问题讨论】:
-
如果没有匹配,SUM 聚合函数不会抛出异常,它只是返回 null。你的代码应该已经做你想做的了。