资讯专栏INFORMATION COLUMN

Green plum函数和存储过程

IT那活儿 / 477人阅读
Green plum函数和存储过程

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


01


存储过程是一组可以完成特定功能的 SQL 语句集,经编译后存储在数据 库中。用户在行存储过程时,需要指定存储过程的名称并给出参数函数和存储过程语句。
优点:
  • 多个客户端应用程序是由不同的语言编写,或者运行在不同的平台,需要执行同样的数据库操作;

  • 安全性很高;

  • 可以提升性能;

  • 允许用户在数据库服务器中使用函数库。

语法规范如下:
CREATE FUNCTION RETURNS AS $$
DECLARE
;
BEGIN
;
;
;
[exception]
when then
END;
$$ LANGUAGE plpgsql [volatile|immutable|stable];
green plum中如果有具体的返回值就是函数,如果没有返回值就是存储过程。

02


函数的创建
CREATE OR REPLACE FUNCTION storcfunc() RETURNS integer AS $$
DECLARE
quantity integer :=6;
BEGIN
RAISE NOTICE Quantity here is % ,quantity; -- Quantity here is 6
quantity :=50;
DECLARE
quantity integer :=9;
BEGIN
RAISE NOTICE Quantity here is % ,quantity; -- Quantity here is 9
END;
RAISE NOTICE Quantity here is % ,quantity; -- Quantity here is 3
RETURN quantity;
END;
$$ LANGUAGE plpgsql;
如果需要查看具体函数,则需要使用df+ [函数名]:

03


存储过程的创建
CREATE OR REPLACE FUNCTION stored_procedure() RETURNS void as $$
BEGIN
truncate updated;
insert into updated
select y.* from omn_dew x right outer join omn_src y on x.empid=y.empid where x.empid is not null;
update omn_dew
set deptno=y.deptno,
sal=y.sal
from updated y
where omn_dew.empid=y.empid;
insert into omn_dew
select 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那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129485.html

相关文章

  • python使用xlwt生成Excel表格

    摘要:在工作中,遇到了使用生成表格的需求,经过资料的查找与对比,决定使用第三方库来生成表格,现做如下总结简单例子创建实例,并且规定编码设置工作表名称向表格中插入字符串,前两位数字分别为行和列,第三个参数为要插入的内容,第四个参数可以设置样式将生成 在工作中,遇到了使用python生成Excel表格的需求,经过资料的查找与对比,决定使用第三方库xlwt来生成Excel表格,现做如下总结:简单例...

    jhhfft 评论0 收藏0
  • 彻底解决if else嵌套问题

    摘要:彻底解决嵌套问题开发过程中常因为过多导致代码融于,难以阅读,今天就我们就一起来解决这个问题,让代码更优美,维护更方便,接盘侠更开心有函数根据传入水果类型返回颜色,代码如下写法一写法二把同类放到一个中数组筛选内多条件处理更早丢出不符合条件的资 彻底解决if else嵌套问题 开发过程中常因为if else过多导致代码融于,难以阅读,今天就我们就一起来解决这个问题,让代码更优美,维护更方便...

    zhoutk 评论0 收藏0
  • PHP标准库SPL学习之数据结构、常用迭代器、基础接口

    摘要:将数组或者集合中的全部或者一部数据取出来,用迭代器比较方便迭代器能陆续遍历几个迭代器按顺序迭代访问几个不同的迭代器。 一、SPL简介      什么是SPL PHP的标准库SPL:Standard PHP Library      SPL: 用于解决常见普遍问题的一组接口与类的集合      Common Problem: 数学建模/数据结构 解决数据怎么存储的问题 元素遍历 ...

    2i18ns 评论0 收藏0
  • 傻瓜式学Python3——列表

    摘要:列表是编程中使用频率极高的数据结构,由一系列按特定顺序排列的元素组成,用表示,逗号分隔元素,类似中的数组。由于列表包含多个元素,所以通常命名为复数形式,如,等。使用切片裁剪获取子列表使用列表名裁剪获取对应索引区间的子列。 前言: 好久不见,突然发觉好久没写博客了,最近迷上了 Python 无法自拔,了解了一下,Python 简单易学,尤其是接触过 java 的人,入门 Python 更...

    Andrman 评论0 收藏0
  • 怎么用python正则表达式提取/匹配中文汉字

      小编写这篇文章的一个主要目的,主要是给大家去做一个解答,解答的内容主要还是python相关事宜,比如,可以用python正则表达式去匹配和提取中文汉字,那么,具体的内容做法是什么呢?下面就给大家详细解答下。  python用正则表达式提取中文  Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用  unicode中中...

    89542767 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<