Green plum函数和存储过程
AI 摘要 / TL;DR
Green plum函数和存储过程 点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 01 存储过程是一组可以完成特定功能的 SQL 语句集,经编译后存储在数据 库中。用户在行存储过程时,需要指定存储过程的名称并给出参数函数和存储过程语句。 优点: 多个客户端应用程序是由不同的语言编写
来源: https://www.ucloud.cn/yun/129485.html 作者: IT那活儿 发布日期: 发布于2023-01-11 13:19
Green plum函数和存储过程
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
01
存储过程是一组可以完成特定功能的 SQL 语句集,经编译后存储在数据 库中。用户在行存储过程时,需要指定存储过程的名称并给出参数函数和存储过程语句。
优点:
- 多个客户端应用程序是由不同的语言编写,或者运行在不同的平台,需要执行同样的数据库操作;
- 安全性很高;
- 可以提升性能;
- 允许用户在数据库服务器中使用函数库。
语法规范如下:
CREATE FUNCTION RETURNS AS $$DECLARE;BEGIN;;;[exception]when thenEND;$$ LANGUAGE plpgsql [volatile|immutable|stable];
green plum中如果有具体的返回值就是函数,如果没有返回值就是存储过程。
02
函数的创建
CREATE OR REPLACE FUNCTION storcfunc() RETURNS integer AS $$DECLAREquantity integer :=6;BEGINRAISE NOTICE Quantity here is % ,quantity; -- Quantity here is 6quantity :=50;DECLAREquantity integer :=9;BEGINRAISE NOTICE Quantity here is % ,quantity; -- Quantity here is 9END;RAISE NOTICE Quantity here is % ,quantity; -- Quantity here is 3RETURN quantity;END;$$ LANGUAGE plpgsql;

如果需要查看具体函数,则需要使用df+ [函数名]:

03
存储过程的创建
CREATE OR REPLACE FUNCTION stored_procedure() RETURNS void as $$BEGINtruncate updated;insert into updatedselect y.* from omn_dew x right outer join omn_src y on x.empid=y.empid where x.empid is not null;update omn_dewset deptno=y.deptno,sal=y.salfrom updated ywhere omn_dew.empid=y.empid;insert into omn_dewselect y.* from omn_dew x right outer join omn_src y on x.empid=y.empid where x.empid is null;end;$$ language plpgsql;

存储过程同理df+ [存储过程名]。

04
**pg_proc系统表:**此表存储着关于函数(或过程)的信息,包括内置函数和那些通过create。
function定义的函数
- proname:函数的名字。
- pronamespace:函数的oid。
- proowner:函数的所有者。
- prolang:函数的实验语言或调用接口。
- proisagg:是否为聚集函数。
- prosecdef:是否为安全定义器(一个 setuid 函数)。
- proisstrict:如果任何调用参数都为空,函数直接返回空,此时函数实际上不会调用。
- proretset:是否返回一个集合。
- provolatile:函数结果是否只依赖于输入参数,或者会被外界因素影响。
- pronargs:参数的个数。
- prorettype:返回值的数据类型。
- proargtypes:存放函数参数数据类型的数组。
- proallargtypes:存放函数参数数据类型的数组。
- proargmodes:存放函数参数模式的数组。
- proargnames:存放函数参数名字的数组。
- prosrc 该字段告诉函数处理器如何调用该函数。
- probin:如何调用该函数的附加信息。
- proacl:grant和revoke分配的访问权限。
通过系统表查看函数:

多表查询可以确认函数是否正常:


END
本文作者:陆 游
本文来源:IT那活儿(上海新炬王翦团队)
