postgresql之存储过程

百度百科是这么描述存储过程的:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,首次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果有)来执行它。它是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

特性

  • 存储于数据库服务器
  • 一次编译后可多次调用
  • 设计良好的数据库应用程序很可能会用到它
  • 由SQL和过程语句来定义
  • 应用程序通过SQL接口来调用

存储过程举例
1、参数列表只包含函数输入参数,不包含输出参数
存储过程定义:

CREATE OR REPLACE FUNCTION add(a INTEGER, b NUMERIC)
RETURNS NUMERIC
AS $$
    SELECT a+b;
$$ LANGUAGE SQL;

调用方法:

SELECT add(1,3);
SELECT * FROM add(1,3);

结果:
在这里插入图片描述
2、同时包含输入参数和输出参数
存储过程定义:

CREATE OR REPLACE FUNCTION plus_and_minus
(IN a INTEGER, IN b NUMERIC, OUT c NUMERIC, OUT d NUMERIC)
AS $$
    SELECT a+b, a-b;
$$ LANGUAGE SQL;

调用方法:

SELECT plus_and_minus(6,5);

结果:
在这里插入图片描述
调用方法:

SELECT * from  plus_and_minus(6,5);

结果:
在这里插入图片描述
3、在函数定义中,可以写多个SQL语句,不一定是SELECT语句,可以是其它任意合法的SQL。但最后一条SQL必须是SELECT语句,并且该SQL的结果将作为该函数的输出结果。

注意点
1、存储过程(FUNCITON)变量可以直接用 || 拼接。
2、存储过程的对象不可以直接用变量,要用 quote_ident(objVar)

3、$1 $2是 FUNCTION 参数的顺序,如1中的 $1 $2交换,USING 后面的不换 结果 :select max(myTableName) from myFeildname

4、注意:SQL语句中的大写全部会变成小写,要想大写存大,必须要用双引号。

参考:https://www.cnblogs.com/ssqhan/p/7289931.html
https://www.cnblogs.com/kuang17/p/8143814.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值