PG SQL-自定义存储过程
1.无参存储过程:
CREATE OR REPLACE FUNCTION funName()
RETURNS "pg_catalog"."void" AS $BODY$
DECLARE
pro1 type;-- pro1为自定义变量名,type为变量类型,可以是integer,varchar,record。
···
BEGIN
pro1 :=XXX;-- 在存储过程中给变量赋值,不要直接等于,格式是冒号+等号,即“:=”
-- To Do Something...
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
2.有参存储过程:
CREATE OR REPLACE FUNCTION funName(column1 int4,column2 varchar, column3 _int4,column4 _varchar)
RETURNS "pg_catalog"."void" AS $BODY$
DECLARE
pro1 type;-- pro1为自定义变量名,type为变量类型,可以是integer,varchar,record。
···
BEGIN
pro1 :=XXX;-- 在存储过程中给变量赋值,不要直接等于,格式是冒号+等号,即“:=”
-- To Do Something...
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
入参可以是int4,varchar,也可以传数组类型参数,如:_int4(整数数组),_varchar(字符数组);
3.在存储过程中处理异常:
CREATE OR REPLACE FUNCTION funName()
RETURNS "pg_catalog"."void" AS $BODY$
DECLARE
pro1 type;-- pro1为自定义变量名,type为变量类型,可以是integer,varchar,record。
···
BEGIN
pro1 :=XXX;-- 在存储过程中给变量赋值,不要直接等于,格式是冒号+等号,即“:=”
-- To Do Something...
EXCEPTION
WHEN others THEN
-- To Do Something...
RAISE EXCEPTION '(%)', sqlerrm; -- 打印错误信息。sqlerrm是一个可以直接调用的变量,是异常信息;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100