2009-03-26 47 views
6

などのSQL文のバッチを持っています。複数のコマンドをOracleの1つのExecuteScalarで実行する

などに挿入します。 insert into ....; 削除.........;

など

私はオラクルに対してそれらを実行しようとすると、それは今、私はこれが原因の文の間にセミコロンであることを理解することができます私のthisエラー(ORA-00911無効な文字)

を与え、私が試しましたこれはSQL Server上でこれは働いていましたが、Oracleでは今まで運がありませんでした。

ExecuteScalarなどの機能を使用してoracleに対して複数の文を実行する方法はありますか?


DUPLICATEHow can I execute multiple Oracle SQL statements with .NET

答えて

7

BEGIN ENDをしようとBEGIN..END

BEGIN insert into.... ; insert into.... ; delete .........; END; 
+0

私はSQL Developerで動作しました。私が思い出した後。 ENDの後。 –

+0

これはOracle EMで私にとって役に立ちました。 –

0

とするTryラッピングが私のために動作しませんでした。

私がしたことは、接続(私は開いている接続を最小限にしようとする)を与えた新しい方法を作ったことです。区切り記号として各1 seperatly

private void ExecuteSql(string statements, IDbConnection conn) 
    { 
     IDbCommand cmd = conn.CreateCommand(); 
     string[] commands = statements.Split(new string[] { ";\r\n", "; ", ";\t", ";\n" }, StringSplitOptions.RemoveEmptyEntries); 
     foreach (string c in commands) 
     { 
      cmd.CommandText = c; 
      cmd.CommandType = CommandType.Text; 
      cmd.ExecuteNonQuery(); 
     } 

     cmd.Dispose(); 
    } 

Petrosはあなたのニーズに応じてそれを変更する必要があるかもしれません

それについてPS私に言った後、私のインスピレーションは、私の場合は、接続を必要とし、 thisポストから来たを実行します開いていると、呼び出し元から何かが発生した場合はそれに応じて閉じます。

関連する問題