PostgreSQL官方文档

http://www.postgres.cn/docs/10/index.html

Postgresql过程语言官方文档
http://www.postgres.cn/docs/10/xplang.html

Postgresql查看当前版本
select version();

PostgreSQL函数创建格式

drop function if exists [函数名];
create function [函数名] ([参数]) returns [返回值] as$$
declare [变量声明]
begin[sql逻辑]
end;
$$
language 'plpgsql';

示例1

create or replace function calculate (num1 int, num2 int, opr char(1)) returns int as$$
declare num int;
begin--raise notice 'num1:%,num2:%;opr:%', num1, num2, opr;if opr = '-' then num := num1 - num2; elseif opr = '+' then num := num1 + num2;elseif opr = '*' then num := num1 * num2; elseif opr = '/' then num := num1 / num2; else raise exception 'opr参数值只能为(-,+,*,/):当前opr的值:%', opr;end if;return num;
end
$$
language 'plpgsql';

示例2


create or replace function calculate (num1 int, num2 int, opr char(1), out num int) as
$$
beginif opr = '-' then num := num1 - num2; elseif opr = '+' then num := num1 + num2;elseif opr = '*' then num := num1 * num2; elseif opr = '/' then num := num1 / num2; else raise exception 'opr参数值只能为(-,+,*,/):当前opr的值:%', opr;end if;
end
$$
language 'plpgsql';

调用

select calculate(1, 1, '+');

基本语法

以下简要摘自官方文档,只做抛砖引玉的作用,更详细的说明请查看上面提供官方文档地址。

1、条件

IF ... THEN ... END IFIF ... THEN ... ELSE ... END IFIF ... THEN ... ELSIF ... THEN ... ELSE ... END IF
CASE ... WHEN ... THEN ... ELSE ... END CASECASE WHEN ... THEN ... ELSE ... END CASE

2、循环

LOOP

[<<label>>]
LOOP...IF ... THEN CONTINUE [label] [WHEN boolean-expression];END IF;EXIT [label] [WHEN boolean-expression];
END LOOP [label];

WHILE

[<<label>>]
WHILE boolean-expression LOOP...
END LOOP [label];

FOR

[<<label>>]
FOR name IN [REVERSE] expression .. expression [BY expression] LOOP...
END LOOP [label];

通过查询结果循环

[<<label>>]
FOR target IN query LOOP...
END LOOP [label];

通过数组循环

[<<label>>]
FOREACH target [SLICE number] IN ARRAY expression LOOP...
END LOOP [label];

捕获错误抛异常

[<<label>>]
DECLARE...
BEGIN...
EXCEPTIONWHEN condition [ OR condition ... ] THENRAISE NOTICE '提示';WHEN condition [ OR condition ... ] THENRAISE NOTICE '提示,%,%', bianliang1,bianliang2;
END;

PostgreSQL 存储过程(函数)创建和基本语法相关推荐

  1. sql优化+索引优化+详解(存储过程+函数 创建千万的测试数据)

    存储过程+函数 创建千万的测试数据 用MYSQL的存储过程创建千万级测试数据表 1创建表 CREATE TABLE `think_user` (`uid` int(11) NOT NULL AUTO_ ...

  2. pg日期转周_postgresql 存储过程函数:时间戳与日期字符串相互转换

    编程之家收集整理的这篇文章主要介绍了postgresql 存储过程函数:时间戳与日期字符串相互转换,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. CREATE OR REPLACE F ...

  3. 结构(structure)创建——直接赋值法与使用struct函数创建法。

    一些不同类型的数据组合成一个整体,虽然各个属性分别具有不同的数据类型,但是它们之间是密切相关的,结构((Structure)类型就是包含一组记录的数据类型.结构类型的变量多种多样,可以是一维数组.二维 ...

  4. (2)存储过程中可以调用其他存储过程吗?_详解Oracle创建存储过程、创建函数、创建包及实例演示...

    概述 说句实在的,平时工作基本上不会去背啥创建存储过程.创建函数.创建包之类的语法,但是相信大家面试啥的却基本会笔试这些,所以就对存储过程.函数和包的语法做下总结,也做个备忘!这里面语法大家理解就可以 ...

  5. oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包

    认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命 ...

  6. mysql中常用函数与存储过程的创建

    mysql中常用函数与存储过程的创建 常用函数汇总 数学函数 字符串函数 日期和时间函数 条件判断函数 系统函数 加密函数 其他函数 自定义函数 自定义变量的声明和赋值 基本语法 实例 存储过程 事务 ...

  7. C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)

    C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...

  8. PostgreSQL date_trunc() 截断日期函数,完成定时时间语法.

    摘要:Oracle有大量的日期函数可供使用,trunc, new_time,months_between,next_day,last_day,add_months,round等函数.当然Postgre ...

  9. postgreSQL存储过程写法示例

    转载自:http://panyongzheng.iteye.com/blog/2194815 PostgreSQL的存储过程简单入门 http://blog.csdn.net/rachel_luo/a ...

最新文章

  1. 创建属于自己的调色板
  2. Yii框架的form处理
  3. 时间序列预测——深度好文,ARIMA是最难用的(数据预处理过程不适合工业应用),线性回归模型简单适用,预测趋势很不错,xgboost的话,不太适合趋势预测,如果数据平稳也可以使用。...
  4. HDFS剩余空间大小的Java接口,java api获取hdfs索引大小
  5. PicGo+码云(gitee)图床环境搭建
  6. cad,max,revit,Civil ,InventorNavisworks 卸载清理工具
  7. Ubuntu20.04安装输入法
  8. 贴片元器件与插件元器件的区别在哪?
  9. QT Critical error detected c0000374
  10. kubernetes日志架构PLG(promtail+loki+grafana)
  11. 2023年全国最新工会考试精选真题及答案51
  12. 微信小程序的socket.io即时通讯开发(基于E聊SDK)
  13. 基于51单片机的三角波信号发生器设计
  14. 【三维目标检测】3DSSD(一)
  15. redis分布式锁--》死锁问题解决策略研究
  16. linux操作命令comm,一天一个shell命令 文本操作系列-comm命令用法
  17. 基于IJK打造自己的播放器(一) 简单集成使用ijkPlayer播放hls视频
  18. iOS开发者必备:自己总结的iOS、mac开源项目及库
  19. 封神台—高校靶场ctf—第一期Web web_008
  20. 复制文件或文件夹时出错(无法复制***:没有足够的可用磁盘空间

热门文章

  1. python在哪个城市工资高_“英语学科教学和笔译专业,哪个工资较高?”
  2. 惠普HP Laser NS MFP 1005c 打印机驱动
  3. 如何将文件夹中的mp3按照歌手分类排序
  4. spring5源码阅读(五)Post Processors类型及作用详解
  5. SRAM、PSRAM、SPI FLASH杂记【转】
  6. 基于matlab的谐振电路仿真,基于Matlab的LC并联谐振回路的建模与仿真
  7. Matlab导入Excel数据进行三维轨迹制图
  8. 杨超越杯编程大赛登上 GitHub,程序员为追星都开发了什么?
  9. 光伏储能联合运行的直流微电网matlab/simulink 光伏+MPPT控制 储能系统双向DCDC充放电控制
  10. 地图切片工具:批量生成标注、弹窗