2013-10-25 24 views
0
CREATE or replace PACKAGE pipelined_pkg AS 

    TYPE emp_rt IS RECORD 
    (empno NUMBER(4) 
    , ename VARCHAR2(10) 
    , job  VARCHAR2(9) 
    , mgr  NUMBER(4) 
    , hiredate DATE 
    , sal  NUMBER(7,2) 
    , comm  NUMBER(7,2) 
    , deptno number(2) 
    , presntStatus Boolean default false 
    ); 

    TYPE emp_ntt IS TABLE OF pipelined_pkg.emp_rt; 

    function pipelined_emp 
     RETURN pipelined_pkg.emp_ntt PIPELINED; 

    end pipelined_pkg; 
/

當我嘗試編譯上面的代碼我得到布爾屬性的記錄類型,並使用記錄類型的管道函數

[ Error(17,15): PLS-00630: pipelined functions must have a supported collection return type ] 

如果我刪除布爾屬性,它是compling罰款。

難道不可能在記錄類型布爾屬性,並使用管道函數記錄類型?

回答

0

據我所知,有用來定義記錄/列時是在Oracle沒有BOOLEAN類型。 對於那些特定的字段,我們通常使用的數字(1)或CHAR(1)。

1

因爲SQL沒有數據類型等同於布爾,你不能:

  • 指定一個布爾值的數據庫表列

  • 選擇或取得一個數據庫表列的值成布爾
    變量

  • 在使用SQL語句中的布爾值,SQL函數或PL/SQL
    本功能從離子SQL語句

調用你不能一個布爾值傳遞給DBMS_OUTPUT.PUT或DBMS_OUTPUT.PUTLINE子程序。要打印一個布爾值,使用IF或CASE語句,它 轉換爲一個字符值(有關這些語句的信息,請參閱「條件選擇語句」)。

參考http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/datatypes.htm#LNPLS348進一步的信息。