注册

自定义不数组作为函数入参,设置函数索引报错

long 2023/06/30 585 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:
【CPU】:
【问题描述】*:达梦自定义函数使用varchar,int 等作为参数是可以设置Deterministic 的,但是使用自定义数组类型却设置不了,这个如何解决,我要使用函数索引。
比如:create function unique_index_func ( name varchar,age int,is_delete int) RETURN varchar
Deterministic
as
v_name varchar;
v_age int;
v_is_delete int ;
id int;
begin
id:=test_user_seq.nextval;
if name is null THEN
v_name:=CONVERT(varchar,id);
else
v_name:= name;
end if;

if (age is null) then
v_age:=id;
else
v_age:=age;
end if;

if(is_delete is null) then
v_is_delete:=id;
else
v_is_delete:=is_delete;
end if;

return concat(v_name,v_age,v_is_delete);
end
这个是可以执行的

但是: create or replace function unique_index_func1 ( arr dateArray) RETURN varchar(200)
Deterministic
as
v_concat_result varchar(255);
v_index int;
begin
for i in 1 .. arr.count
loop
exit when arr(i) is null ;
v_concat_result:=v_concat_result||arr(i);
v_index:=i;
end loop;

if v_index = arr.count THEN
return v_concat_result;
else
return test_user_seq.nextval;
end if;
复制
end

这段报编译错误 ,但是去掉Deterministic 就能编译过,但是不能用于函数索引,报错信息:
函数索引表达式包含有非法的列类型、不确定性函数、非静态方法或集函数

其中dateArray : create or replace type dateArray is table of varchar2(255);
序列: create sequence test_user_seq;

回答 0
暂无回答
扫一扫
联系客服