首页 > 解决方案 > 基于视图条目在存储过程中引发异常

问题描述

我有一个存储过程。我想实现以下我用伪代码编写的逻辑。

如果以下查询具有多个条目之一:

SELECT
    NULL
FROM
    table1
WHERE
    condition
GROUP BY
    column
HAVING
    COUNT(1) > 1
UNION ALL
SELECT
    NULL
FROM
    table1 a
WHERE
    condition
    AND EXISTS (
        SELECT
            NULL
        FROM
            table2 b
        WHERE
            condition
    );

然后引发异常并停止存储过程。

标签: sqloracle

解决方案


如果从查询中找到特定值,以下是引发异常的示例:

declare
    somevar dual.dummy%type;
begin
    select 'Y' into somevar
    from   dual;

    if somevar = 'Y' then
        raise_application_error(-20123, 'Hull breach on deck 15. Abandon ship.'); 
    end if;
end;

“从对偶中选择”可以是任何查询,因此请随意替换您的联合和计数(尽管我们应该真正坚持标准count(*),而不是count('Dracula')等等)。


推荐阅读