本文介绍GBase 8a的实现从动态执行的SQL里,用session变量来返回数据的方法。
目录导航
session变量
用@开头的变量,是session级的变量,只有当前session可见。可以规避并发冲突。
动态SQL代码
如下SQL是样例,一般都是concat拼装的,所以只能动态执行,其中需要返回的数据通过@out_str返回。
@str=concat('select now() into @out_str from ',v_table_name,' limit 1');
存储过程样例
drop procedure if exists p_test;
delimiter //
create procedure p_test()
begin
DECLARE v_sql_string varchar(1000);
set v_sql_string = 'select now() into @out_str';
set @sql_str_exec = v_sql_string;
prepare stmt_exesql from @sql_str_exec;
execute stmt_exesql;
select @out_str;
end//
delimiter ;
call p_test();
select @out_str;