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 ]

ブール属性を削除すると、正常にコンパイルされます。

レコード タイプにブール属性を持ち、パイプライン関数でレコード タイプを使用することはできませんか?

4

2 に答える 2

1

SQL には BOOLEAN に相当するデータ型がないため、次のことはできません。

  • BOOLEAN 値をデータベース テーブルの列に割り当てる

  • データベース テーブルの列の値を選択または取得して BOOLEAN
    変数 に入れる

  • SQL ステートメント、SQL 関数、または
    SQL ステートメントから呼び出される PL/SQL 関数で BOOLEAN 値を使用する

BOOLEAN 値を DBMS_OUTPUT.PUT または DBMS_OUTPUT.PUTLINE サブプログラムに渡すことはできません。BOOLEAN値を出力するには、IF文またはCASE文を使用して文字値に変換します(これらの文の詳細は、「条件選択文」を参照してください)。

詳細については、 http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/datatypes.htm#LNPLS348を参照してください。

于 2013-10-26T09:38:52.527 に答える
0

私の知る限り、レコード/列を定義するために使用される場合、オラクルにはBOOLEAN型はありません。これらの特定のフィールドには、通常、NUMBER(1) または CHAR(1) を使用します。

于 2013-10-25T20:05:56.200 に答える