函数定义
PL/pgSQL 是一种可载入的过程语言,可以被用来创建函数和触发器过程等,如果数据库内置函数无法满足需求,可以通过 PL/pgSQL 来定义新的函数,本节将介绍如何通过 CREATE FUNCTION
来创建自定义函数。
自定义函数的语法如下:
CREATE [ OR REPLACE ] FUNCTION funcname([IN parameters,OUT parameters]) RETURNS return_value_type AS |
funcname 是函数名,IN / OUT表示输入/输出参数,可以有多个输入/输出参数,参数由参数名+数据类型组成,如 v_id int。return_value_type 返回值类型,无返回值使用 void。DECLARE 定义变量列表,declaration 为函数变量列表,变量写成变量名+类型的格式。$body$ 表示里面引用的内容的函数逻辑块,return_value 表示返回值变量,LANGUAGE 指定编程语言,如 plpgsql。
函数参数中使用 OUT 标明返回参数,return_value_type 为 void 时,函数逻辑块中不需要使用 RETURN 进行值返回,如果没有使用 OUT 且 return_value_type 不为 void 时,必须在逻辑块中使用 RETURN 表明返回值,无返回值可写成 RETURN NULL。OUT 指定的返回值类型或者 RETURN指定的返回值类型必须与 RETURNS 后指定的类型一致。
如果不需要接收执行结果,需使用 PERFORM 替换 SELECT(BEGIN里面)。否则有执行结果返回会报错。
例如创建一个 p_function 的函数,返回参数相对应的 p_name 的值:
CREATE OR REPLACE FUNCTION p_func(in p_no int) |
函数调用:
highgo=# SELECT p_func(1); |