11

我有一个 PL/SQL 存储过程,我想在其中运行多个更新,然后捕获任何异常并在 out 参数中返回它们。为了简单起见,在下面的代码块中,我只是将异常代码和错误消息输出到控制台。但是,下面的代码块不起作用(我遇到“找到/期待”语法错误)

    CREATE OR REPLACE PROCEDURE DBP.TESTING_SP AS 
    DECLARE
    v_code  NUMBER;
    v_errm  VARCHAR2(64);
    BEGIN
    UPDATE PS_NE_PHONE_TBL SET NE_PHONE_TYPE = 'TEST' WHERE NEMPLID_TBL = 'N14924';

    EXCEPTION
    WHEN OTHERS THEN
    v_code := SQLCODE;
    v_errm := SUBSTR(SQLERRM, 1, 64);
    DBMS_OUTPUT.PUT_LINE (v_code || ' ' || v_errm);
    END TESTING_SP;
    /

我正在尝试做的正确语法是什么?

我在一个论坛上阅读

“使用 Create 或 Replace 语法时,不能使用 Declare。Declare 仅适用于未命名的匿名块。因此,要么删除第 1 行并创建一个匿名块,要么删除第 2 行并创建一个命名过程。”

但我不确定如何创建一个匿名块或创建一个命名过程来完成我想做的事情(如果那确实是“解决方案”)。有人可以帮忙吗?

4

1 回答 1

6

只需删除 DECLARE 语句。

于 2012-09-08T03:01:39.850 回答