在 pl/sql 中使用匿名块调用过程?

Call procedure using anonymous block in pl/sql?

我是 PL/SQL 的新手,但一直在阅读它并使用了一些模板,包括我从这里找到的一些模板。

我想做的是编写一个匿名块来调用一些先前在 sql 开发人员项目中编写的过程。我试过了,但 运行 不正确。它 returns 一个 "Error starting at line : 2 in command " 的错误然后报告一个 "closed connection."

这是我的尝试:

DECLARE
    P_USER_NAME VARCHAR;
    P_DEBUG_FLAG  VARCHAR;
    P_DEBUG_FIELD VARCHAR;
    P_DEBUG_VALUE VARCHAR;

BEGIN

    schema.package.procedure(
        OutParam1, OutParam2, OutParam3, OutParam4);

    dbms_output.put_line('OutParam1: ' || P_USER_NAME);
    dbms_output.put_line('OutParam2: ' || P_DEBUG_FLAG);
    dbms_output.put_line('OutParam3: ' || P_DEBUG_FIELD);
    dbms_output.put_line('OutParam4: ' || P_DEBUG_VALUE);
END;
/

这些是我要调用的过程:

   PROCEDURE CLEAR_DEBUG (P_USER_NAME IN VARCHAR2);

   PROCEDURE WRITE_DEBUG (P_USER_NAME     IN VARCHAR2,
                          P_DEBUG_FLAG    IN VARCHAR2,
                          P_DEBUG_FIELD   IN VARCHAR2,
                          P_DEBUG_VALUE   IN VARCHAR2);

   PROCEDURE READ_DEBUG (P_USER_NAME    IN     VARCHAR2,
                         P_REF_CURSOR      OUT SYS_REFCURSOR);
END P_DEBUG;

您的代码中还有更多错误:

  1. 正确声明变量 - VARCHAR 需要长度限制
  2. OutParam1、OutParam2、OutParam3、OutParam4 未声明 - 使用声明的变量作为参数,注意作为参数传递的变量必须具有相同的数据类型
  3. 我想你想打电话给 P_DEBUG.WRITE_DEBUG(P_USER_NAME, P_DEBUG_FLAG, P_DEBUG_FIELD, P_DEBUG_VALUE);