简体   繁体   English

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

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

I am fairly new to PL/SQL but have been reading up on it and have used some templates, including some which I found from here. 我对PL / SQL相当陌生,但是一直在阅读它,并使用了一些模板,其中包括一些我从此处找到的模板。

What I want to do is to write an anonymous block to call some procedures which wrere written earlier in a sql developer project. 我想做的是编写一个匿名块来调用某些在sql开发人员项目中较早编写的过程。 I have attempted it but it isn't running properly. 我已经尝试过,但是运行不正常。 It returns an error of "Error starting at line : 2 in command " and then reports a "closed connection." 它返回错误“错误从命令第2行开始”,然后报告“关闭的连接”。

This is my attempt: 这是我的尝试:

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

And these are the procedure I want to call: 这些是我要调用的过程:

   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;

There are more errors in your code: 您的代码中还有更多错误:

  1. declare the variables properly - VARCHAR requires length constraint 正确声明变量-VARCHAR需要长度约束
  2. OutParam1, OutParam2, OutParam3, OutParam4 are not declared - use the declared variables as arguments instead, beware of the variables passed as arguments must have the same data type 未声明OutParam1,OutParam2,OutParam3,OutParam4-而是使用声明的变量作为参数,当心作为参数传递的变量必须具有相同的数据类型
  3. I expect you wanted to call P_DEBUG.WRITE_DEBUG(P_USER_NAME, P_DEBUG_FLAG, P_DEBUG_FIELD, P_DEBUG_VALUE); 我希望您想致电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