Можно ли использовать PRAGMA AUTONOMOUS_TRANSACTION в Pro*C?

Я пытался использовать PRAGMA AUTONOMOUS_TRANSACTION в Pro*C, но я получаю следующую ошибку во время компиляции:

    PRAGMA AUTONOMOUS_TRANSACTION;
...........1
PCC-S-02201, Encountered the symbol "AUTONOMOUS_TRANSACTION" when expecting one
of the following:

   ; into, using,

Соответствующий код раздела:

  EXEC SQL EXECUTE
    PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
      INSERT INTO TABLE_TEST
        ( FIELD1, FIELD2, FIELD3 )
      VALUES
        (:sOraFIELD1, :sOraFIELD2, :sOraFIELD3);
      COMMIT;
    END;
  END-EXEC;

Что я здесь не так делаю? Это Pro*C не позволяет этого?

Версия: Pro*C/C++: Release 11.2.0.1.0

Есть ли у меня альтернатива для получения аналогичного результата? Я не могу просто сделать EXEC SQL COMMIT; потому что тогда я получил бы ошибку Oracle 2089: COMMIT не разрешен в подчиненном сеансе

1 ответ

Я никогда не пробовал это в Pro*c, однако, пожалуйста, оцените концепцию альтернативного соединения. Вы можете вставить и зафиксировать, используя альтернативное соединение.

EXEC SQL AT "имя БД" "ваше утверждение или в данном случае" Insert ;EXEC SQL AT «имя БД» «ваше заявление или в этом случае» Commit;

Другие вопросы по тегам