暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

openGauss每日一练第十五天 | 定义存储过程和函数

原创 护苗使者9G 2021-12-15
1116

学习目标

学习openGauss定义存储过程和函数

课程学习

连接数据库

su - omm
gsql -r

企业微信截图_16394724591321.png

课程作业

1.创建带有入参和出参的函数1,调用函数时使用按参数值传递和命名标记法传参

CREATE FUNCTION anson_func_sum(num1 IN integer, num2 IN integer, res OUT integer)
RETURN integer
AS
BEGIN
res := num1 + num2;
END;
/
CALL anson_func_sum(1, 3,0);
CALL anson_func_sum(num2 := 2, num1 := 3,res :=0);

企业微信截图_16395462156918.png

2.创建返回类型为record的函数2,重命名函数2

CREATE OR REPLACE FUNCTION anson_func_res2(i int, out result_1 bigint, out result_2 bigint)
returns SETOF RECORD
as $$
begin
result_1 = i + 1;
result_2 = i * 20;
return next;
end;
$$language plpgsql;
call anson_func_res2(1, 0, 0);
alter function anson_func_res2(in int,out bigint,out bigint) rename to anson_func_res20;

image.png

3.使用\sf和系统函数查看函数定义

\sf anson_func_res20
select * from from pg_proc where proname = 'anson_func_res20';

image.png
企业微信截图_16395454394290.png

4.删除函数

drop function anson_func_sum;
drop function anson_func_res20;

企业微信截图_16395456877742.png

写在最后

15天的课程又结束了,学习的是openGauss存储过程和函数,与ORACLE的存储过程和函数类似,查了官方的说明注意事项,放置于最下面,总之操作非常之方便,\ 加相应命令的操作,让人非常舒适,期待继续学习,更加了解openGauss数据库,同时知悉各数据库的异同之处,能顺畅的使用openGauss数据库。

注意事项

如果创建函数时参数或返回值带有精度,不进行精度检测。
创建函数时,函数定义中对表对象的操作建议都显式指定模式,否则可能会导致函数执行异常。
在创建函数时,函数内部通过SET语句设置current_schema和search_path无效。执行完函数search_path和current_schema与执行函数前的search_path和current_schema保持一致。
如果函数参数中带有出参,SELECT调用函数必须缺省出参,CALL调用函数必须指定出参,对于调用重载的带有PACKAGE属性的函数,CALL调用函数可以缺省出参,具体信息参见CALL的示例。
兼容Postgresql风格的函数或者带有PACKAGE属性的函数支持重载。在指定REPLACE的时候,如果参数个数、类型、返回值有变化,不会替换原有函数,而是会建立新的函数。
SELECT调用可以指定不同参数来进行同名函数调用。由于语法不支持调用不带有PACKAGE属性的同名函数。
在创建function时,不能在avg函数外面嵌套其他agg函数或者其他系统函数。
新创建的函数默认会给PUBLIC授予执行权限(详见GRANT)。用户可以选择收回PUBLIC默认执行权限,然后根据需要将执行权限授予其他用户,为了避免出现新函数能被所有人访问的时间窗口,应在一个事务中创建函数并且设置函数执行权限。
在函数内部调用其它无参数的函数时,可以省略括号,直接使用函数名进行调用。
兼容Oracle风格的函数支持参数注释的查看与导出、导入。
兼容Oracle风格的函数支持介于IS/AS与plsql_body之间的注释的查看与导出、导入。

最后修改时间:2021-12-22 09:34:25
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论