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存储过程实用脚本(二):创建函数入门
Apr 05 PostgreSQL
PostgreSQL将数据加载到buffer cache中操作方法
Apr 16 PostgreSQL
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
May 21 PostgreSQL
通过Qt连接OpenGauss数据库的详细教程
Jun 23 PostgreSQL
关于PostgreSQL JSONB的匹配和交集问题
Sep 14 PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
Jan 18 PostgreSQL
Rust 连接 PostgreSQL 数据库的详细过程
Jan 22 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 06 PostgreSQL
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
Apr 12 PostgreSQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
Apr 12 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的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
Python实现单词翻译功能
2017/06/06 Python
python语言元素知识点详解
2019/05/15 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
安装python及pycharm的教程图解
2019/10/10 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
电子邮箱格式怎么写
2014/01/12 职场文书
《赶海》教学反思
2014/04/20 职场文书
大学生求职信例文
2014/06/29 职场文书
平安建设汇报材料
2014/12/29 职场文书
经理岗位职责范本
2015/04/15 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers