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

openGauss每日一练第15天 | 存储过程和函数

原创 许玉冲 2021-12-21
1045

本次练习了解和认识openGauss对存储过程和函数的建立和使用,日常管理。


存储过程创建和使用:

#创建create table item(c1 int, c2 int);
create procedure procedure_insert(a int, b int)
as
begin
        insert into item values(a, b);
end;
/

#查看存储过程
select * from pg_proc where proname = 'procedure_insert';

#调用存储过程
select procedure_insert(1,100);
select * from item;

#删除存储过程 drop procedure if exists procedure_insert;

参考地址:

https://opengauss.org/zh/docs/1.1.0/docs/Developerguide/CREATE-PROCEDURE.html


函数创建和使用:


创建函数注意事项:

  • 如果创建函数时参数或返回值带有精度,不进行精度检测。
  • 创建函数时,函数定义中对表对象的操作建议都显式指定模式,否则可能会导致函数执行异常。
  • 在创建函数时,函数内部通过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默认执行权限,然后根据需要将执行权限授予其他用户,为了避免出现新函数能被所有人访问的时间窗口,应在一个事务中创建函数并且设置函数执行权限。



#创建
CREATE FUNCTION func_add_sql(num1 integer, num2 integer) RETURN integer
AS
BEGIN
RETURN num1 + num2;
END;
/#查看函数定义
\sf func_add_sql
select * from pg_proc where proname = 'func_add_sql';
#按参数值传递。
CALL func_add_sql(1, 3);
#函数重命名:ALTER FUNCTION func_add_sql(INTEGER, INTEGER) RENAME TO add_two_number;
#删除函数:DROP FUNCTION add_two_number; Drop function func_increment_sql1; Drop function func_increment_sql;

参考地址:

https://opengauss.org/zh/docs/1.0.0/docs/Developerguide/CREATE-FUNCTION.html

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

评论