我正在尝试将我的MySQL过程转换为使用回滚和提交的pgSQL函数。当我这样做时,我收到如下错误,
错误:无法在PL / pgSQL中开始/结束事务 提示:使用带有EXCEPTION子句的BEGIN块。 语境:PL语句中的PL / pgSQL函数fun_profile_update(refcursor,字符变化,字符变化)第155行
请帮帮我。这是我的功能:
答案 0 :(得分:1)
虽然开始/结束事务不能在PL / pgSQL过程中使用,但您可以抛出异常并处理它。
样品:
CREATE TABLE public.test
(
id serial,
description character(255)
)
WITH (
OIDS=FALSE
);
CREATE OR REPLACE FUNCTION insert_test(IN _description text, IN _rollback boolean DEFAULT false, OUT result integer) RETURNS integer AS $$
BEGIN
INSERT INTO public.test(description) SELECT _description;
IF _rollback THEN
RAISE EXCEPTION 'rollback' USING errcode = '40000'; --code for transaction_rollback
END IF;
result := 1;
EXCEPTION
WHEN transaction_rollback THEN
result := 0;
END;
$$
LANGUAGE PLPGSQL;