GBase 8s
适配迁移
文章
CREATE ROW TYPE rowtype_list(id int, name varchar(40));
2,创建 spl,返回LIST类型
-- 初始化list,并返回
DROP FUNCTION IF EXISTS get_list;
CREATE FUNCTION get_list()
RETURNING LIST(rowtype_list not null)
DEFINE v_list LIST(rowtype_list not null);
DEFINE i int;
LET v_list = list{};
FOR i = 1 TO 10
INSERT INTO TABLE(v_list) values(ROW(i,'test'||i)::rowtype_list);
END FOR;
RETURN v_list;
END FUNCTION;
3,传入LIST参数,使用游标处理。
-- LIST当作参数输入
DROP FUNCTION IF EXISTS call_list;
CREATE FUNCTION call_list(p_list LIST(rowtype_list not null)) RETURNING varchar(40);
DEFINE v_id int;
DEFINE v_name varchar(40);
FOREACH cur1 FOR SELECT id, name INTO v_id,v_name FROM TABLE(p_list)
if mod(v_id,3) == 1 then
RETURN v_name WITH RESUME;
end if;
END FOREACH;
END FUNCTION;
4,调用
call call_list(get_list());
结果:
(expression)
test1
test4
test7
test10
评论
登录后才可以发表评论
热门帖子
- 12025-12-01浏览数:183265
- 22023-05-09浏览数:26036
- 42023-09-25浏览数:19689
- 52020-05-11浏览数:18322