ppas:array value must start with "{" or dimension information
阿__龙 2018-11-01 04:42:32 客户最近把oracle迁移到ppas,折腾了一个月总算可以用了;但是还有一函数一直未能解决,百度查了很久,都没能很好的解决。求大神帮忙
Oracle数据库迁移ppas,rncontinueratecalm函数在oracle中可以顺利执行,在ppas中执行报错。
Ppas中函数运行报错信息:Procedure execution failed
ERROR: array value must start with "{" or dimension information
CONTEXT: edb-spl function rncontinueratecalm(character varying,character varying,character varying,character varying,character varying,integer,timestamp without time zone,timestamp without time zone,timestamp without time zone,timestamp without time zone,character varying,character varying) while casting return value to function's return type
函数返回值为一个自定义类型rncontinuerateresult,自定义类型创建语句:
CREATE OR REPLACE TYPE RNCONTINUERATE As Object
(
GroupColumn Varchar2(60),
SumSignPrem Number(18, 2),
SumRnPrem Number(18, 2),
SumSignCount integer,
SumRnCount integer,
ContinueRate Number(18, 4)
)
CREATE OR REPLACE TYPE rncontinuerateresult is table of RNCONTINUERATE;
函数开头定义返回值类型:
m_Data rncontinuerate := rncontinuerate(null,
null,
null,
null,
null,
null);
函数结尾为返回值复制如下:
v_Rc :游标
Open v_Rc For
select a.GroupColumn,
Sum(nvl(a.signprem, 0) * a.sharerate),
Sum(nvl(a.rnprem, 0) * a.sharerate),
count(distinct innercontno),
count(distinct actugetno),
decode(Sum(nvl(a.signprem, 0) * a.sharerate),
0,
0.8,
round(Sum(nvl(a.rnprem, 0) * a.sharerate) /
Sum(nvl(a.signprem, 0) * a.sharerate),
4))
from Faagentconttmp a
where a.GroupColumn is not null
group by a.GroupColumn;
end if;
end if;
Loop
Fetch v_Rc
Into m_Data.GroupColumn, m_Data.SumSignPrem, m_Data.SumRnPrem, m_Data.SumSignCount, m_Data.SumRnCount, m_Data.ContinueRate;
Exit When v_Rc%Notfound;
End Loop;
Close v_Rc;
Return m_Data;