PLS-00306:调用'PUT_LINE'时参数的数量或类型错误

mic*_*k46 1 oracle plsql oracle12c

这是我第一次尝试编写Oracle过程,并且我收到了一个错误(显示在问题标题中)DBMS_OUTPUT.PUT_LINE.

我在网上看到,它只能回传VARCAHR2列,所以我只投了两个VARCHAR2正在访问的非列,但我仍然得到错误.当我尝试直接在oracle SQL Developer中运行它时,会发生此错误.

CREATE OR REPLACE PROCEDURE LOGGING_PRC 
(
  STARTDATE_IN IN VARCHAR2,
  ENDDATE_IN IN VARCHAR2,
  NAMES_IN IN VARCHAR2, 
  MODS_IN IN VARCHAR2, 
  LOGS_IN IN VARCHAR2,

  ID_OUT OUT VARCHAR2,
  NAME_OUT OUT VARCHAR2,
  MODULE_OUT OUT VARCHAR2,
  ENTRYDATE_OUT OUT VARCHAR2,
  STATUS_OUT OUT VARCHAR2,
  TYPE_OUT OUT VARCHAR2
)  
  AS 
BEGIN
    SELECT
    CAST(ID_LOG AS VARCHAR2(16)),
     APNAME,
     APPMOD,
     CAST(ENTRYDATE AS VARCHAR2(30)),
     APPSTATUS,
     LOGTYPE
  INTO 
      ID_OUT,
      NAME_OUT,
      MODULE_OUT,
      ENTRYDATE_OUT,
      STATUS_OUT,
      TYPE_OUT
   FROM 
     BASE          
   WHERE     
     ENTRYDATE > STARTDATE_IN AND
     ENTRYDATE  < ENDDATE_IN AND
     (NAMES  =  NAMES_IN OR NAMES_IN IS NULL) AND
     (MODS = MODS_IN OR MODS_IN IS NULL) AND
     (LOGS = LOGS_IN  OR LOGS_IN IS NULL);      
  RETURN;
DBMS_OUTPUT.PUT_LINE(ID_OUT, NAME_OUT, MODULE_OUT, ENTRYDATE_OUT, STATUS_OUT, TYPE_OUT);
END LOGGING_PRC;
Run Code Online (Sandbox Code Playgroud)

有人看到我的代码不正确吗?

Ale*_*sej 7

DBMS_OUTPUT.PUT_LINE定义如下

procedure put_line(a varchar2);
Run Code Online (Sandbox Code Playgroud)

所以,它只接受一个输入参数.

如果需要打印多个字段的值,则需要将它们连接在一起varchar2; 你可以尝试:

DBMS_OUTPUT.PUT_LINE(ID_OUT || ',' || NAME_OUT || ',' || MODULE_OUT || ',' || ENTRYDATE_OUT || ',' || STATUS_OUT || ',' || TYPE_OUT);
Run Code Online (Sandbox Code Playgroud)