使用 PRAGMA 调用命名异常

问题描述 投票:0回答:1

当然!您可以在 Stack Overflow 上发布以下问题:


标题:在 Oracle PL/SQL 中处理 SELECT 到变量时的异常

身体:

我正在开发一个 Oracle PL/SQL 块,我试图根据给定的

prodid
从表 (
catalog1
) 中检索产品 ID (
sid
)。我正在使用以下代码片段:

DECLARE
    ct_exception EXCEPTION;
    prodid NUMBER(22);
    PRAGMA EXCEPTION_INIT(ct_exception, -2293);
BEGIN
    SELECT c.pid INTO prodid FROM catalog1 c WHERE sid = &a;

    IF SQL%NOTFOUND THEN
        RAISE ct_exception;
    END IF;

EXCEPTION
    WHEN ct_exception THEN
        DBMS_OUTPUT.PUT_LINE('Record not found');
END;

但是,即使没有找到指定的

sid
的记录,它似乎也没有按预期引发异常。我对 PL/SQL 比较陌生,因此任何有关可能出现问题的见解或处理这种情况的替代方法将不胜感激。

oracle plsql
1个回答
0
投票

正确的实现就像这样简单:

DECLARE
    prodid NUMBER(22);
BEGIN
    SELECT c.pid INTO prodid FROM catalog1 c WHERE sid = &a;

EXCEPTION
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('Record not found');
END;
© www.soinside.com 2019 - 2024. All rights reserved.