自定义函数
基本语法
//建一个名字为function_name的自定义函数
create or replace function function_name()
returns data_type as //returns 返回一个data_type数据类型的结果;data_type 是返回的字段的类型;
$$ //固定写法
......//方法体
$$ LANGUAGE SQL; //固定写法
-------------------------------
CREATE OR REPLACE FUNCTION function_name(args)
RETURNS return_type AS $$
DECLARE
-- 变量声明
BEGIN
-- 函数体
RETURN result;
END;
$$ LANGUAGE plpgsql;
创建函数
create or replace function add(integer,integer)
returns integer as
$$
select $1 + $2;
$$ LANGUAGE SQL;
- 运行结果
- 调用结果
函数嵌套
CREATE FUNCTION outer_function()
RETURNS void AS $$
DECLARE
FUNCTION inner_function()
RETURNS void AS $$
-- 内部函数代码
$$ LANGUAGE plpgsql;
BEGIN
-- 外部函数代码
inner_function();
END;
$$ LANGUAGE plpgsql;
递归函数
CREATE FUNCTION recursive_function(arg)
RETURNS type AS $$
BEGIN
IF condition THEN
RETURN arg;
ELSE
RETURN recursive_function(arg + 1);
END IF;
END;
$$ LANGUAGE plpgsql;
删除函数
- 使用
DROP FUNCTION
语句来删除一个或多个函数
DROP FUNCTION function_name(args);
- 如果函数不存在,使用
IF EXISTS
选项不报错
DROP FUNCTION IF EXISTS function_name(args);
- 级联删除
如果其他对象(如视图或触发器)依赖于该函数,可以使用 CASCADE 选项来级联删除这些依赖对象
DROP FUNCTION function_name(args) CASCADE;