PostgreSQL存储过程实用脚本(二):创建函数入门


Posted in PostgreSQL onApril 05, 2021

准备工作——创建用户数据库和模式:

        在数据库中新建用来学习的数据库mydb,并在mydb数据库中新增mysc,即my database和my schema的缩写,接下来的示例脚本将在mydb数据库下的mysc模式下创建。脚本如下,

-- 1.创建自己的数据库
CREATE DATABASE mydb
    WITH 
    OWNER = postgres
    ENCODING = 'UTF8'
    LC_COLLATE = 'C'
    LC_CTYPE = 'C'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1;
-- 添加备注
COMMENT ON DATABASE mydb
    IS 'my administrative connection database';


-- 2.创建自己的schema
CREATE SCHEMA mysc
   AUTHORIZATION postgres;
-- 添加备注
COMMENT ON SCHEMA mysc
    IS 'my schema';
-- 授权
GRANT ALL ON SCHEMA mysc TO postgres;

创建简单自定义函数示例:

        pl/sql语法比较灵活,但在创建函数时还是要尽量符合语言约定的规范写法,比如参数名称使用可读性较好的写法(驼峰式、短横线式等写法),在示例脚本中尽量使用符合约定的写法。

  • 创建加法计算函数:

创建一个实现两数相加的自定义函数,具体脚本如下,

p_a:计算参数1
p_b:计算参数2
p_sum:返回结果变量
-------------------
CREATE OR REPLACE FUNCTION mydb.mysc.add(IN p_a integer,IN p_b integer,OUT p_sum integer)
    AS 
	$BODY$ 
		BEGIN
			p_sum:= p_a + p_b;  -- 进行加法运算,并将计算结果赋值给输出的参数p_sum
		END;
	$BODY$ 
    LANGUAGE 'plpgsql'			-- 指定函数的程序语言
    VOLATILE					-- 优化器不进行优化
    RETURNS NULL ON NULL INPUT; -- 当传入参数含有null时返回null

调用定义的加法函数输出结果为:

PostgreSQL存储过程实用脚本(二):创建函数入门

  • 创建通用计算函数:

在加法计算函数的基础上进行扩展,实现加减乘除运算的函数,脚本如下,

p_a:计算参数1
p_b:计算参数2
p_operate:要进行的加减乘除操作
p_result:返回结果变量
-------------------
CREATE OR REPLACE FUNCTION mydb.mysc.calc(IN p_a integer,IN p_b integer,IN p_operate char,OUT p_result decimal(16,2))
    AS 
	$BODY$ 
			declare tmp_sql varchar(100);  -- 定义变量

		BEGIN
			tmp_sql:= 'select ('||p_a||'*1.0)'|| p_operate ||'('||p_b||'*1.0)';  -- 拼接要执行的函数
			execute tmp_sql into p_result; -- 将查询结果赋值给p_result
		END;
	$BODY$ 
    LANGUAGE 'plpgsql'			-- 指定函数的程序语言
    VOLATILE					-- 优化器不进行优化
   RETURNS NULL ON NULL INPUT; -- 当传入参数含有null时返回null

调用函数两数相加:

PostgreSQL存储过程实用脚本(二):创建函数入门

调用函数两数相减:

PostgreSQL存储过程实用脚本(二):创建函数入门

调用函数两数相乘:

PostgreSQL存储过程实用脚本(二):创建函数入门

调用函数两数相除:

PostgreSQL存储过程实用脚本(二):创建函数入门

PostgreSQL 相关文章推荐
Centos环境下Postgresql 安装配置及环境变量配置技巧
May 18 PostgreSQL
postgresql无序uuid性能测试及对数据库的影响
Jun 11 PostgreSQL
postgres之jsonb属性的使用操作
Jun 23 PostgreSQL
postgresql 删除重复数据案例详解
Aug 02 PostgreSQL
关于PostgreSQL JSONB的匹配和交集问题
Sep 14 PostgreSQL
Oracle配置dblink访问PostgreSQL的操作方法
Mar 21 PostgreSQL
PostgreSQL事务回卷实战案例详析
Mar 25 PostgreSQL
postgreSQL数据库基础知识介绍
Apr 12 PostgreSQL
PostgreSQL出现死锁该如何解决
May 30 PostgreSQL
PostgreSQL怎么创建分区表详解
Jun 25 PostgreSQL
PostgreSQL逻辑复制解密原理解析
Sep 23 PostgreSQL
PostgreSQL之连接失败的问题及解决
May 08 PostgreSQL
PostgreSQL将数据加载到buffer cache中操作方法
Apr 16 #PostgreSQL
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
Centos环境下Postgresql 安装配置及环境变量配置技巧
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
如何使用PostgreSQL进行中文全文检索
May 27 #PostgreSQL
postgresql无序uuid性能测试及对数据库的影响
Jun 11 #PostgreSQL
postgres之jsonb属性的使用操作
Jun 23 #PostgreSQL
You might like
随机头像PHP版
2006/10/09 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
Python 异常处理实例详解
2014/03/12 Python
Python collections模块实例讲解
2014/04/07 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
Python通过format函数格式化显示值
2020/10/17 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
几个Shell Script面试题
2014/04/18 面试题
公司部门司机岗位职责
2014/01/03 职场文书
广告创意求职信
2014/03/17 职场文书
宣传口号大全
2014/06/16 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书