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 相关文章推荐
如何使用PostgreSQL进行中文全文检索
May 27 PostgreSQL
通过Qt连接OpenGauss数据库的详细教程
Jun 23 PostgreSQL
浅谈PostgreSQL表分区的三种方式
Jun 29 PostgreSQL
PostGIS的安装与入门使用指南
Jan 18 PostgreSQL
Rust 连接 PostgreSQL 数据库的详细过程
Jan 22 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 06 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 07 PostgreSQL
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
Apr 12 PostgreSQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
Apr 12 PostgreSQL
postgreSQL数据库基础知识介绍
Apr 12 PostgreSQL
PostgreSQL逻辑复制解密原理解析
Sep 23 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
web.py在模板中输出美元符号的方法
2014/08/26 Python
Python简单日志处理类分享
2015/02/14 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
《水乡歌》教学反思
2014/04/24 职场文书
廉洁校园实施方案
2014/05/25 职场文书
环保主题班会教案
2015/08/13 职场文书
关于保护环境的建议书
2019/06/24 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server