云数据库 GaussDB-动态调用存储过程:语法

时间:2025-01-26 10:48:52

语法

语法请参见图1

图1 call_procedure::=

using_clause子句的语法参见图2

图2 using_clause::=

对以上语法格式的解释如下:

  • CALL procedure_name: 调用存储过程。
  • [:placeholder1,:placeholder2,…]: 存储过程参数占位符列表,占位符名不能使用带引号的数字、字符或字符串。占位符个数与参数个数相同。
  • USING [IN|OUT|IN OUT] bind_argument: 用于指定存放传递给存储过程参数值的变量。bind_argument前的修饰符与对应参数的修饰符一致。
  • 不支持调用带有占位符的重载函数或者存储过程。
示例
--创建存储过程proc_add。gaussdb=# CREATE OR REPLACE PROCEDURE proc_add(    param1    in   INTEGER,    param2    out  INTEGER,    param3    in   INTEGER)ASBEGIN   param2:= param1 + param3;END;/gaussdb=# DECLARE    input1 INTEGER:=1;    input2 INTEGER:=2;    statement  VARCHAR2(200);    param2     INTEGER;BEGIN   --声明调用语句    statement := 'call proc_add(:col_1, :col_2, :col_3)';    --执行语句    EXECUTE IMMEDIATE statement        USING IN input1, OUT param2, IN input2;    dbe_output.print_line('result is: '||to_char(param2));END;/--删除存储过程gaussdb=# DROP PROCEDURE proc_add;
support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-42-0746.html