GBase 8s
适配迁移
问答

sql语法

发表于2024-11-18 13:49:06121次浏览10个评论

在存储过程中,如果一个变量存储了一条sql语句,即let a = “select * from onetable”; 如何执行这条sql语句

评论

登录后才可以发表评论
用户头像
liaosnet发表于 1年前
execute immediate a;
用户头像
liaosnet发表于 1年前
@liaosnet:但是需要注意的是,在8s中执行select并不是返回表类数据,如果没有用于接收的变量,将返回错误。
GBase用户24232发表于 1年前
@liaosnet:用了变量,但是它要into temp表,之前用游标的方式,需要一个个指定字段名,但是如果字段是上百个比较多,该如何接收以及展示
用户头像
liaosnet发表于 1年前
@GBase用户24232:也得一个一个指定字段名。。
GBase用户24232发表于 1年前
@liaosnet:那对于let a = “select * from onetable”;这种sql的执行只能一个一个手动指定字段名吗
用户头像
liaosnet发表于 1年前
@GBase用户24232:对,现阶段是这样的。。等待实现返回表类型。
GBase用户24232发表于 1年前
@liaosnet:有可能通过集合拿到吗
GBase用户24232发表于 1年前
@liaosnet:报错了:SQL 错误 [ErrorCode : -659] [SQLState : IX000] : SELECT 语句需要 INTO TEMP 表。
我的写法:
DROP PROCEDURE IF EXISTS call_out_param2;
create procedure call_out_param2()
define a NVARCHAR(100);
let a = 'select * from onetable';
execute immediate a;
END PROCEDURE;

call call_out_param2();
用户头像
路路路发表于 9个月前
如果还有问题可以再发问答贴~
用户头像
柒柒天晴发表于 2个月前
坐等大佬解析。