语法
CREATE [OR REPLACE] FUNCTION function_name (params)
RETURNS return_datatype
AS $BODY$
DECLARE
declaration;
[...]
BEGIN
<function_body>
[...]
RETURN {variable_name | variable_type}
END; $BODY$
LANGUAGE plpgsql;
参数说明
- function_name:创建函数的名称。
- [OR REPLACE]:可选的,允许修改或替换现有函数。
- RETURN:指定要从函数返回的数据类型。可以是基础数据类型,复合或域类型,或者也可以引用表列的类型。
- function_body:函数体可执行部分。
- plpgsql:指定实现该函数的语言的名称。
创建一个获取当前时间的函数
CREATE OR REPLACE FUNCTION getdate()
RETURNS varchar
AS $BODY$
DECLARE
result_current_date varchar;
BEGIN
select to_char(now(),'yyyy-mm-dd hh24:mi:ss') into result_current_date;
RETURN result_current_date;
END; $BODY$
LANGUAGE plpgsql;
创建一个带参数的函数
CREATE OR REPLACE FUNCTION paramdemo(str varchar)
RETURNS varchar
AS $BODY$
DECLARE
result_str varchar;
BEGIN
result_str := '测试带参的函数';
RETURN result_str || ':' || str;
END; $BODY$
LANGUAGE plpgsql;
创建一个返回自定义字段表函数
CREATE OR REPLACE FUNCTION gettesttable()
RETURNS table(vid int, vname varchar, vage int, vphone varchar) AS $BODY$
DECLARE
result_str varchar;
BEGIN
vid := 1000;
vname := '张三';
vage := 22;
vphone := '12345678912';
return next;
vid := 1001;
vname := '李四';
vage := 23;
vphone := '12345678912';
return next;
END; $BODY$
LANGUAGE plpgsql
查询自定义表函数