oracle - 如何在 ORACLE PL/SQL 创建或替换存储过程中捕获并返回(或打印)异常

标签 oracle stored-procedures plsql

我有一个 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;
    /

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

我在一个论坛上阅读

"When using the Create or Replace syntax, you can not use Declare. Declare is only for anonymous blocks that are not named. So either remove line 1 and create an anonymous block, or remove line 2 and create a named procedure."



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

最佳答案

只需删除 DECLARE 语句。

关于oracle - 如何在 ORACLE PL/SQL 创建或替换存储过程中捕获并返回(或打印)异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12327643/

相关文章:

sql - 使用 SQL 从 Oracle 数据库中插入和检索 BLOB 数据的方法有哪些?

oracle - 如何在oracle pl/sql中的类型定义中使用常量?

sql - Oracle:查询如何将小计和总计汇总在一起?

java - 使用 JPA 读取多个结果集

php - 从php中的存储过程中获取值

sql - 是否建议在 Oracle EBS 并发程序中提交一个 Commit?

sql - IF EXISTS 条件不适用于 PLSQL

sql - oracle将两列不同值组合成多列

oracle - 在 Oracle 中使用游标对前端应用程序有好处吗?

python - 从 MySQL StoredProcedure 获取多个列表/数据