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 ]
如果删除布尔属性,则表示正常。
是否可以在记录类型中使用布尔属性,并在流水线函数中使用记录类型?
答案 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)。