0
私のMySQLプロシージャを、ロールバックとコミットを使用するpgSQL関数に変換しようとしています。以下のようなエラーが表示されます。ロールバックとコミットを使用するPgSQL関数
私を助けてください。ここに私の関数です:
私のMySQLプロシージャを、ロールバックとコミットを使用するpgSQL関数に変換しようとしています。以下のようなエラーが表示されます。ロールバックとコミットを使用するPgSQL関数
私を助けてください。ここに私の関数です:
begin/endトランザクションは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;
不可。関数の呼び出し側は、コミットまたはロールバックする必要があります –