0

有没有办法处理 sql(ORACLE 9i) 中的异常而不是只讨论 PL/SQL sql ?

由于我试图将包含数字和文字的列的值相除,我只需要从中取出数字,就好像它可以被任何数字整除,否则它的数字如果包含文字它不会被除以它会产生错误.

如何处理这些错误?请推荐!!

4

3 回答 3

1

编写一个简单的IS_NUMERICPL/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
于 2010-03-29T15:28:19.780 回答
0

不确定 Oracle,但 @@ERROR 应该返回您的 SQL 语句在运行时生成的任何错误代码。我会围绕它运行我的异常处理:


If @@ERROR <> 0
BEGIN
    ...
    [Your Code Here]
    ...
END

于 2010-03-29T15:36:50.290 回答
0

oracle 中的异常是用一个exception when ... then子句处理的。您只需要找出异常代码即可。

begin
  --Your code here
exception when YOUR_EXCEPTION_CODE then
  --Exception handling here
end;
于 2010-03-29T15:25:07.470 回答