3
Когда я ниже функции, возникает некоторые ошибки:Как выполнить пакетное компиляцию в plpgsql?
**ddddl=# select sssss(1,10);
ERROR: cannot begin/end transactions in PL/pgSQL
HINT: Use a BEGIN block with an EXCEPTION clause instead.
CONTEXT: PL/pgSQL function sssss(integer,integer) line 8 at SQL statement**
Вот мой пример кода.
CREATE OR REPLACE FUNCTION sssss(
IN c_1 int,
IN f_i int
) returns void as
$$
DECLARE t_c INT;
BEGIN
t_c := f_i;
WHILE c_1 <= t_c
loop
IF MOD(c_1, 4) = 1 THEN
start transaction;
END IF;
-- My statements here.
IF MOD(c_1, 4) = 0 THEN
COMMIT;
END IF;
c_1 := c_1 + 1;
END loop;
COMMIT;
END;
$$ language plpgsql;
Так может ли кто-нибудь дать мне образец того, как закончить работу, как приведенный выше код?
Я использую PostgreSQL 9.2.
Какую проблему вы пытаетесь решить с этим дозированием? Если вы пытаетесь повысить производительность, тогда вы, как правило, должны перефразировать все, чтобы не полагаться на PLOP/PgSQL 'LOOP' в первую очередь - вместо этого используйте обычные заданные операции. –