当然!您可以在 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 比较陌生,因此任何有关可能出现问题的见解或处理这种情况的替代方法将不胜感激。
正确的实现就像这样简单:
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;