2017-02-23 89 views
-1

我想在p_string的程序通過,則該過程將它傳遞給函數,該函數將返回布爾值的程序,布爾迴歸過程會再次出現使用dbms_output.put_line。但是,我一直有問題顯示它。我應該如何顯示它?如何顯示從功能的程序價值迴歸

CREATE OR REPLACE PACKAGE BODY LAB4_527802_pkg AS 
FUNCTION LAB4_527802_FCN(p_string VARCHAR2) 
    RETURN BOOLEAN 
    AS 
    string1 BOOLEAN; 
    BEGIN 
     IF p_string = 'AAA' THEN 
      string1 := TRUE; 
     ELSE 
      string1 := FALSE; 
     END IF; 
     return string1; 
    END LAB4_527802_FCN; 

    PROCEDURE LAB4_527802_PROC (p_string varchar2) 
    AS 
    string1 boolean; 
    BEGIN 
    string1 := LAB4_527802_pkg.LAB4_527802_FCN(p_string); 
    dbms_output.put_line (string1); 
    END LAB4_527802_PROC; 
    END LAB4_527802_pkg; 
/
    SHOW ERRORS 

這就是我所說的程序。

set serveroutput on; 
    begin 
    LAB4_527802_pkg.LAB4_527802_PROC ('AAA'); 
    end; 
+0

請追加行containi「/」你的第二個腳本(類似於你的第一個SCRPT) – miracle173

+1

這是相當混亂,如果你給boolean類型名稱「字符串1」的參數,因爲的讀者代碼將假定它的類型是字符串(VARCHAR2或CHAR)。你可以將它命名爲'is_string'。 – miracle173

+0

您是否同意您的問題是如何顯示布爾值,並且與函數無關?我的意思是你仍然會遇到'begin dbms_output.put_line(true);結束;' –

回答

2

雖然命名字符串1的變量聲明爲布爾值,無論是在功能LAB4_527802_FCN和程序LAB4_527802_PROC。 我會首先建議使用不同的名稱。但正如你可以想象的那樣,這不是問題的原因。

在行

dbms_output.put_line (string1); 

你想打印boolean類型不工作的一個變量。過程put_line需要一個'字符串'(char,varchar,varchar2)參數。

我懷疑你收到以下錯誤,不是嗎?

​​

您需要將布爾轉換爲字符串才能打印它。例如:

DBMS_OUTPUT.put_line (CASE WHEN string1 THEN 'TRUE' ELSE 'FALSE' END); 
+0

我看到好了,謝謝,我不知道put_line只支持char,varchar,varchar2。 –

+1

您也可以使用'sys.diutil.bool_to_int'將您的布爾返回值轉換爲1或0並將其與'dbms_output.put_line'一起使用 – XING