GBase 8s
适配迁移
文章

GBase 8s数据库存储过程使用出参示例

发表于2019-03-24 16:40:003016次浏览8个评论

以下以示例说明存储过程的入参,出参,以及使用存储过程调用出参的过程及方法。

1, 创建存储过程 入参、出参。

drop procedure if exists p3;
create procedure p3(v1 int, out v2 varchar(20))
  let v1 = 101;
  let v2 = "P3 out parm value";
end procedure;

2, 另一个存储过程用于调用前一个存储过程的入参、出参。需要注意的是:调用的存储过程应对变量指定默认值,不指定值将会报错。

drop procedure if exists c_p3;
create procedure c_p3() returning varchar(20)
  define v1 int;
  define v2 varchar(20);
  
  let v1 = 22;
  let v2 = "C_P3 input default value";
  -- SPL inout/out parm must has default value;
  call p3(v1,v2);
  
  return v2;
end procedure;

该存储过程返回的v2的应当是p3中出参的值。该存储过程返回的v2的应当是p3中出参的值。

> execute procedure c_p3();

(expression)         

P3 out parm value 

存储过程同样支持 入参、出参 使用ROW类型

drop procedure if exists p4;
create procedure p4(v1 int, out v2 ROW(col1 int, col2 varchar(20)))
  let v1 = 101;
  let v2 = ROW(4,"P4_test123");
end procedure;

drop procedure if exists c_p4;
create procedure c_p4() returning varchar(20)
  define v1 int;
  define v2 ROW(col1 int, col2 varchar(20));
  define rc varchar(20);
  
  let v1 = 22;
  let v2 = ROW(33,"C_P4test");
  -- SPL inout/out parm must has default value;
  call p4(v1,v2);
  
  return v2.col2;  -- return SPL p4->v2->col2: "P4_test123"
end procedure;

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 1年前
应该是PGSQl编写的不。
枫溪发表于 1年前
感谢分享
枫溪发表于 1年前
666
枫溪发表于 1年前
收藏一下
枫溪发表于 1年前
mark
用户头像
路路路发表于 11个月前
赞
用户头像
路路路发表于 10个月前
mark
用户头像
levvel发表于 9个月前
哎呀,怎么说呢,嗯......