- - PR -
VB.netよりOracleのPL/SQL実行でRollBackエラー(ORA-02074)
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-06 16:02
VB.netにてOracleのPL/SQLを呼び出すプログラムを作っています。
PL/SQLのみ実行させる分には、正常時はcommit、異常時はRollBackが 正しく実行されます。 しかし、VB.netよりOleDbを使用してストアドプロシージャを実行すると 正常時は問題なくcommitされるのですが、異常時にException内での RollBackを実行すると、ORA-02074のエラーが出ます。 システムの構造上、どうしてもストアドプロシージャの中でRollBackを 実行したいのですが、いい方法をご存知ではありませんか? 宜しくお願い致します。 |
|
投稿日時: 2004-10-06 21:09
PL/SQLのみ実行させる、とは、どのように?SQL*PLUS上ですか?それだと、暗黙でトランザクションがはられますよね。でも、OleDbを使うと、暗黙でAutoCommitですよ。
また、PL/SQLの異常時処理をどのように行っているのでしょう?ORA-02074がでるのは、PL/SQLのRoleBack処理ですか、それともVB.NETのコードでのRoleBack処理でしょうか。 で、ORA0-02704が、どういうエラーで、どういうときに送出されるか、調べました?「親トランザクションからCommit/RoleBackしろ」ということなので、PL/SQLの中からそれらを行おうとしているのだと思います。このエラーから逆に考えると、PL/SQLは、OleDbのコネクションを使いながら、別のトランザクションで実行されていると思われます。なので、PL/SQLでは「Commit/RoleBackしなければならない」ことを返してVB.NETコードでCommit/RoleBackするか、PL/SQLの宣言で「pragma autonomous_transaction;」を宣言して、自立トランザクションで実行するか、というところでしょうか。 _________________ |
1