记录类型中的布尔属性,并使用流水线函数中的记录类型

时间:2013-10-25 18:55:38

标签: oracle plsql

 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 ]

如果删除布尔属性,则表示正常。

是否可以在记录类型中使用布尔属性,并在流水线函数中使用记录类型?

2 个答案:

答案 0 :(得分:1)

因为SQL没有与BOOLEAN等效的数据类型,所以不能:

  • 将BOOLEAN值分配给数据库表列

  • 选择或获取数据库表列的值为BOOLEAN
    变量

  • 在SQL语句,SQL函数或PL / SQL中使用BOOLEAN值 从SQL语句调用的函数

您无法将BOOLEAN值传递给DBMS_OUTPUT.PUT或DBMS_OUTPUT.PUTLINE子程序。要打印BOOLEAN值,请使用IF或CASE语句进行翻译 到字符值(有关这些语句的信息,请参阅“条件选择语句”)。

有关详细信息,请参阅http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/datatypes.htm#LNPLS348

答案 1 :(得分:0)

据我所知,oracle用于定义记录/列时没有BOOLEAN类型。 对于那些特定字段,我们通常使用NUMBER(1)或CHAR(1)。