CALL
功能描述
使用CALL命令可以调用已定义的函数和存储过程。
注意事项
相比于原始的openGauss,dolphin对于CALL语法的修改为:
可以使用CALL语法调用含有查询语句的存储过程。
可以MySQL 5.7.x的客户端工具,mysql-connector-java-5.1.47使用CALL语法调用含有查询语句的存储过程。
语法格式
CALL [schema.|package.] {func_name| procedure_name} ( param_expr );
参数说明
schema
函数或存储过程所在的模式名称。
package
函数或存储过程所在的package名称。
func_name
所调用函数或存储过程的名称。
取值范围:已存在的函数名称。
param_expr
参数列表可以用符号“:=”或者“=>”将参数名和参数值隔开,这种方法的好处是参数可以以任意顺序排列。若参数列表中仅出现参数值,则参数值的排列顺序必须和函数或存储过程定义时的相同。
取值范围:已存在的函数参数名称或存储过程参数名称。
说明: 当开启参数dolphin.sql_mode 为 'block_return_multi_results' 使用call调用存储存储过程或者函数时会有以下限制:
- 必须使用用户自定义变量作为输出参数。
- 只能支持调用plpgsql语言的存储过程。
示例
--设置参数
openGauss=# set dolphin.sql_mode = 'block_return_multi_results';
--创建一个存储过程,返回多个查询语句的结果。
openGauss=# CREATE PROCEDURE proc_a_2 () as
begin
select * from t;
select * from test_1;
end;
/
--调用存储过程。
openGauss=# call proc_a_2();
相关链接
意见反馈