繁体   English   中英

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

[英]Call procedure using anonymous block in pl/sql?

我对PL / SQL相当陌生,但是一直在阅读它,并使用了一些模板,其中包括一些我从此处找到的模板。

我想做的是编写一个匿名块来调用某些在sql开发人员项目中较早编写的过程。 我已经尝试过,但是运行不正常。 它返回错误“错误从命令第2行开始”,然后报告“关闭的连接”。

这是我的尝试:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM