2016-03-08 88 views
0

這是我第一次嘗試編寫Oracle過程,並以DBMS_OUTPUT.PUT_LINE行爲中心收到錯誤(在問題標題中顯示)。PLS-00306:調用'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; 

有人看到我的代碼不正確嗎?

+0

的[語法](http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_output.htm#ARPLS67327)顯示,只需要一個字符串參數,而不是一個列表。 –

回答

5

DBMS_OUTPUT.PUT_LINE定義如下

procedure put_line(a varchar2); 

所以,它僅接受一個輸入參數。

如果您需要打印多個字段的值,則需要將它們連接在一個單獨的varchar2;你可以嘗試使用:

DBMS_OUTPUT.PUT_LINE(ID_OUT || ',' || NAME_OUT || ',' || MODULE_OUT || ',' || ENTRYDATE_OUT || ',' || STATUS_OUT || ',' || TYPE_OUT); 
+0

感謝您提供快速反饋Aleksej。這解決了它... – michaelk46

相關問題