GBase 8s
适配迁移
问答
集合使用的问题
发表于2024-11-18 16:51:2071次浏览8个评论

参照下面这句写的存储过程,最后两张图是onetable表的信息,无效的集合文字的值是什么意思?



评论
登录后才可以发表评论
liaosnet发表于 1年前
用set/list之类的复合类型,同样的需要定义所有返回的字段,然后组合成复合类型而已。。
最佳回答
GBase用户24232发表于 1年前
@liaosnet:不太明白,比如我这句具体改成什么样的,能正常运行?
liaosnet发表于 1年前
@GBase用户24232:CREATE PROCEDURE proc_set()
RETURNS set(varchar(128) NOT null);
define v_set_tabname set(varchar(128) NOT null);
INSERT INTO table(v_set_tabname) SELECT tabname FROM systables;
RETURN v_set_tabname;
END PROCEDURE;
调用:call proc_set() ,返回set类型;
select * from table(proc_set());
RETURNS set(varchar(128) NOT null);
define v_set_tabname set(varchar(128) NOT null);
INSERT INTO table(v_set_tabname) SELECT tabname FROM systables;
RETURN v_set_tabname;
END PROCEDURE;
调用:call proc_set() ,返回set类型;
select * from table(proc_set());
GBase用户24232发表于 1年前
@liaosnet:如果两个字段的话,这是什么原因?
DROP PROCEDURE IF EXISTS proc_set;
CREATE PROCEDURE proc_set()
RETURNS set(varchar(128) NOT null),set(SERIAL NOT null);
define v_set_tabname set(varchar(128) NOT null);
define v_set_id set(SERIAL NOT null);
INSERT INTO table(v_set_tabname,v_set_id) SELECT tabname,tabid FROM systables;
RETURN v_set_tabname,v_set_id;
END PROCEDURE;
--调用:call proc_set() ,返回set类型;
select * from table(proc_set();
DROP PROCEDURE IF EXISTS proc_set;
CREATE PROCEDURE proc_set()
RETURNS set(varchar(128) NOT null),set(SERIAL NOT null);
define v_set_tabname set(varchar(128) NOT null);
define v_set_id set(SERIAL NOT null);
INSERT INTO table(v_set_tabname,v_set_id) SELECT tabname,tabid FROM systables;
RETURN v_set_tabname,v_set_id;
END PROCEDURE;
--调用:call proc_set() ,返回set类型;
select * from table(proc_set();

liaosnet发表于 1年前
@GBase用户24232:你的图上显示,少了右括号。。
BTW:返回多字段,也是要定义的,类似的
DROP PROCEDURE IF EXISTS proc_set();
CREATE PROCEDURE proc_set()
RETURNS set(row(x varchar(128),y int) NOT null);
define v_set_tabname set(row(x varchar(128),y int) NOT null);
INSERT INTO table(v_set_tabname) SELECT tabname,tabid FROM systables;
RETURN v_set_tabname;
END PROCEDURE;
BTW:返回多字段,也是要定义的,类似的
DROP PROCEDURE IF EXISTS proc_set();
CREATE PROCEDURE proc_set()
RETURNS set(row(x varchar(128),y int) NOT null);
define v_set_tabname set(row(x varchar(128),y int) NOT null);
INSERT INTO table(v_set_tabname) SELECT tabname,tabid FROM systables;
RETURN v_set_tabname;
END PROCEDURE;
GBase用户24232发表于 1年前
@liaosnet:好的谢谢
levvel发表于 3个月前
给你点个赞
柒柒天晴发表于 2个月前
学习下。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526