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

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

于 2013-10-25T20:05:56.200 回答