为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:windows
【CPU】:
【问题描述】*:在管道表函数中给row_type中赋值时,id赋值rownum会导致编译错误。我尝试给row_type的id设置为主键自增也是不支持的。我该怎么实现这个效果呢?
原文:
create type row_type as object(ID int,short_str varchar2);
create type table_type as table of row_type;
CREATE OR REPLACE FUNCTION FUNC_SPLIT(
v_Long_str varchar2,
v_split_str varchar2(100)
)
RETURN table_type PIPELINED
AS
DECLARE
v_row_type row_type;
BEGIN
v_row_type := row_type(rownum,v_Long_str);
PIPE ROW (v_row_type);
RETURN;
END;
rownum本身是在SQL执行中产生的伪列,自增是基于表字段实现的,这二者都不能用于DMSQL中,从字面上看您的DMSQL用于将一个长字符串按某个字符串切分后依次返回并带上序号,此处应当在切分过程的循环体中引入数值作为序号填充,例如引入REGEXP_COUNT来对字符串进行分割字符的次数匹配后,将最大匹配数作为循环序号终点