有没有办法处理 sql(ORACLE 9i) 中的异常而不是只讨论 PL/SQL sql ?
由于我试图将包含数字和文字的列的值相除,我只需要从中取出数字,就好像它可以被任何数字整除,否则它的数字如果包含文字它不会被除以它会产生错误.
如何处理这些错误?请推荐!!
编写一个简单的IS_NUMERIC
PL/SQL 函数来过滤数据:
CREATE OR REPLACE FUNCTION IS_NUMERIC (p_input varchar2)
RETURN NUMBER
DETERMINISTIC
IS
l_checkvar number;
BEGIN
l_checkvar := coalesce(to_number(p_input), 'X'); -- maps null as non-numeric
return 1;
EXCEPTION
WHEN OTHERS THEN
return 0;
END;
/
那么您的查询将是:
SELECT MY_NUMBER / MY_MIXED_VALUES
FROM MY_TABLE
WHERE IS_NUMERIC (MY_MIXED_VALUES) = 1
不确定 Oracle,但 @@ERROR 应该返回您的 SQL 语句在运行时生成的任何错误代码。我会围绕它运行我的异常处理:
If @@ERROR <> 0
BEGIN
...
[Your Code Here]
...
END
oracle 中的异常是用一个exception when ... then
子句处理的。您只需要找出异常代码即可。
begin
--Your code here
exception when YOUR_EXCEPTION_CODE then
--Exception handling here
end;