plpgsql系列教程—函数
2020-05-18 17:03
615 查看
函数声明
通过执行CREATE FUNCTION命令,以PL/pgSQL写成的函数可以被定义到服务器中。
CREATE or REPLACE FUNCTION somefunc(integer, text) RETURNS integer AS 'function body text' LANGUAGE plpgsql;
PL/pgSQL是一种块结构的语言。一个块被定义为:
[ <<label>> ] [ DECLARE declarations BEGIN statements END [ label ];
目前CREATE FUNCTION函数体就是简单的一个字符串。通常在写函数体时,使用美元符号引用通常比使用普通单引号语法更有帮助。如果没有美元引用,函数体中的任何单引号或者反斜线必须通过双写来转义。
推荐写法如下:
CREATE FUNCTION somefunc(integer, text) RETURNS integer AS $$ DECLARE BEGIN END; $$ LANGUAGE plpgsql;
函数参数
声明函数参数被命名为标识符$1、$2等等。可选地,能够为$n参数名声明别名来增加可读性。不管是别名还是数字标识符都能用来引用参数值。
数字标识函数参数
CREATE FUNCTION hello(varchar) RETURNS varchar AS $$ DECLARE BEGIN RETURN '你好,' || $1; END; $$ LANGUAGE plpgsql;
示例结果:
小刘先森为作者名字
别名函数参数
- 创建函数时为参数给定一个名称(推荐)
CREATE FUNCTION hello(name varchar) RETURNS varchar AS $$ DECLARE BEGIN RETURN '你好,' || name ; END; $$ LANGUAGE plpgsql;
- 显式地使用声明语法声明一个别名
CREATE FUNCTION hello(varchar) RETURNS varchar AS $$ DECLARE name ALIAS FOR $1; BEGIN RETURN '你好,' || name ; END; $$ LANGUAGE plpgsql;
函数返回
- returns返回
示例函数就使用returns返回了一个varchar类型的值。
CREATE FUNCTION hello(name varchar) RETURNS varchar AS $$ DECLARE BEGIN RETURN '你好,' || name ; END; $$ LANGUAGE plpgsql;
- 输出参数返回
输出参数在返回多个值时很有用。在定义函数时使用OUT关键字标识返回参数。示例如下:
CREATE FUNCTION sum_n_product(x int, y int, OUT sum int, OUT prod int) AS $$ BEGIN sum := x + y; prod := x * y; END; $$ LANGUAGE plpgsql;
输出结果如下:
示例函数的结果实际上创建了一个匿名记录类型。如果使用RETURNS返回,它必须是RETURNS record。使用RETURNS record返回写法如下:
CREATE or replace FUNCTION sum_n_product(x int, y int) returns record AS $$ DECLARE r_data record; sum int; prod int; BEGIN sum := x + y; prod := x * y; r_data = (sum , prod ); return r_data; END; $$ LANGUAGE plpgsql;
输出结果如下:
关于作者
大家有需要介绍哪些部分,或者一些想法欢迎联系我。
GISer
QQ: 1016817543
邮箱:1016817543@qq.com
github:https://github.com/MrSmallLiu (欢迎star)
刘航,国信司南(北京)地理信息技术有限公司,技术经理。负责过多个基于 PostgreSQL 数据库以及 PostGIS 的大中型项目。公司矢量切片产品(基于 PostgreSQL 数据库)研发核心人员。
相关文章推荐
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
- 讲给后台程序员看的前端系列教程(33)——函数
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数012,polygon,多边形
- 智能合约语言 Solidity 教程系列10 - 完全理解函数修改器
- [js高手之路] es6系列教程 - 箭头函数详解
- [js高手之路] es6系列教程 - 函数的默认参数详解
- 好程序员大数据教程分享Scala系列之Option_偏函数_String
- Python+Django+SAE系列教程2-----Python种的函数、模块和数据结构
- C语言基本功教程系列(3) - 快速的函数调用
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
- Django系列教程(5)-- 视图URLconf及视图函数的定义
- 智能合约语言 Solidity 教程系列3 - 函数类型
- Sqlserver基础教程系列4-一些函数的用法
- Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试
- 【《zw版·Halcon与delphi系列原创教程》Halcon图层与常用绘图函数
- 好程序员大数据教程Scala系列之高阶函数
- Golang初级系列教程-函数多个返回值
- 智能合约语言 Solidity 教程系列3 - 函数类型
- 好程序员大数据教程Scala系列之样例类_Option_偏函数
- Linux Shell脚本系列教程(四):使用函数添加环境变量