SQL 中的异常处理?

发布于 2024-08-26 19:35:09 字数 163 浏览 6 评论 0原文

有什么方法可以处理 sql(ORACLE 9i) 中的异常,而不是只谈论 PL/SQL sql 吗?

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

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

Is there any way to handle exceptions in sql(ORACLE 9i) not talking about PL/SQL only sql ?

Since I was trying to divide values of a column that contains both numbers and literals
,I need to fetch out only numbers from it ,as if it divisible by any number then its number else if contains literals it would not get divided it will generate error.

how to handle those errors?
Please suggest!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

忆悲凉 2024-09-02 19:35:09

编写一个简单的 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

Write a simple IS_NUMERIC PL/SQL function to filter your data:

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;
/

Then your query would be:

SELECT MY_NUMBER / MY_MIXED_VALUES
  FROM MY_TABLE
 WHERE IS_NUMERIC (MY_MIXED_VALUES) = 1
弥枳 2024-09-02 19:35:09

oracle 中的异常是通过 exceptionwhen ...then 子句来处理的。您所需要的只是找出异常代码。

begin
  --Your code here
exception when YOUR_EXCEPTION_CODE then
  --Exception handling here
end;

Excetions in oracle are handled with an exception when ... then clause. All you need is to find out the exception code.

begin
  --Your code here
exception when YOUR_EXCEPTION_CODE then
  --Exception handling here
end;
骑趴 2024-09-02 19:35:09

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


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

Not sure about Oracle specifically, but @@ERROR should return any error code your SQL Statement generates while running. I'd run my exception handling around that:


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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文