今天学习openGauss定义存储过程和函数,以下是作业和心得:
1. 连接openGauss
su - omm gsql -r
2. 创建带有入参和出参的函数1,调用函数时使用按参数值传递和命名标记法传参
create function func_1(num1 in integer, num2 in integer, res out integer) return integer
as
begin
res := num1 * num2;
end;
/
call func_1(2, 3, 0);
call func_1(num1 => 1, num2 => 3, 0);
call func_1(num2 := 2, num1 := 3, 0);
/

3. 创建返回类型为record的函数2,重命名函数2
create or replace function func_2(i int, out res_1 bigint, out res_2 bigint) returns setof record
as $$
begin
res_1 = i + 5;
res_2 = i * 20;
return next;
end;
$$language plpgsql;
call func_2(1, 0, 0);
alter function func_2(int) rename to func_2_new;
call func_2_new(2, 0, 0);
/

4. 使用\sf和系统函数查看函数定义
\sf func_1
select * from pg_proc where proname = 'func_1';
/
\sf func_2_new
select * from pg_proc where proname = 'func_2_new';
/

5. 删除函数
drop function func_1;
drop function func_2_new;
/

通过学习和作业,巩固了openGauss定义存储过程和函数的知识。重点是学习使用CALL命令可以调用已定义的函数和存储过程。
(1)存储过程是商业规则和业务逻辑通过程序存储在openGauss中的过程。它是SQL和PL/SQL的组合,使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。
(2)函数参数说明:参数可以包含入参(参数名和类型之间指定“IN”关键字)和出参(参数名和类型之间指定“OUT”关键字),使用CALL命令调用函数或存储过程时,对于非重载的函数,参数列表必须包含出参,出参可以传入一个变量或者任一常量,对于重载的package函数,参数列表里可以忽略出参,忽略出参时可能会导致函数找不到。包含出参时,出参只能是常量。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




