我有以下的自定义RECORD TYPE
:为什么PLS-00382:表达式是错误的类型?
TYPE TB48_RECTYPE IS RECORD (
codpo varchar2(5 BYTE),
codco varchar2(5 BYTE),
quadr varchar2(5 BYTE),
espec varchar2(5 BYTE),
aperf varchar2(5 BYTE),
subes varchar2(5 BYTE),
datin date);
而现在,返回类型完全相同的功能。
function retorna_infos_tabela_48(i_nip in varchar2) return TB48_RECTYPE is
retorno_REC TB48_RECTYPE;
begin
select m.CODPO,
m.CODCO,
m.QUADR,
m.ESPEC,
m.APERF,
m.SUBES,
m.DATIN
into retorno_REC
from TB48_M m
where m.NRO = i_nip;
return retorno_REC;
end retorna_infos_tabela_48;
然而,(并且这已经花了我4个多小时),当我尝试这样运行:
DECLARE
TYPE TB48_RECTYPE IS RECORD (
codpo varchar2(5 BYTE),
codco varchar2(5 BYTE),
quadr varchar2(5 BYTE),
espec varchar2(5 BYTE),
aperf varchar2(5 BYTE),
subes varchar2(5 BYTE),
datin date);
RetVal TB48_RECTYPE;
I_NIP VARCHAR2(200);
BEGIN
I_NIP := '88888888';
RetVal := RETORNA_INFOS_TABELA_48 (I_NIP);
COMMIT;
END;
我收到以下错误信息:PLS-00382:表情是错误的类型。 (在我将函数返回值分配给RetVal变量的行上)
我的意思是,该函数返回RECORD
,它与我声明的变量的类型完全相同!我在这里想念什么?
感谢(和几个REP点)提前。
据我所知,在模式级别声明了一些记录类型,并且有一些记录类型可以在pl/sql环境中声明。使用系统生成的名称将包和pl/sql类型生成到模式级别类型中。您生成了两种不同的类型。声明后删除本地类型定义,以便引用在架构级别定义的类型。 – Glenn 2012-02-27 20:58:40