6

次のようなSQLステートメントのバッチがあります...

に挿入します....; に挿入します....; 消去 .........;

Oracleに対してそれらを実行しようとすると、このエラーが発生します(ORA-00911無効な文字)

これはステートメント間のセミコロンが原因であることがわかりました.SQL Serverでこれを試してみましたが、うまくいきましたが、Oracleでは今のところ運がありません.

ExecuteScalar またはその他の関数を使用して、oracle に対して複数のステートメントを実行する方法はありますか?


DUPLICATE : .NET で複数の Oracle SQL ステートメントを実行するにはどうすればよいですか?

4

2 に答える 2

7

で包んでみるBEGIN..END

BEGIN insert into.... ; insert into.... ; delete .........; END;
于 2009-03-26T14:00:57.690 に答える
0

BEGIN END を試してもうまくいきませんでした。

私がしたことは、接続を指定する新しいメソッドを作成することでした(開いている接続を最小限に抑えようとします); を使用してステートメントを分割します。区切り文字として、それぞれを個別に実行します

    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();
    }

ペトロスが私に教えてくれた後、私のインスピレーションはこの投稿から来ました

PS 必要に応じて変更する必要があるかもしれません。私の場合、接続を開いておく必要があり、発信者から何かが発生した場合はそれに応じて閉じます。

于 2009-03-26T14:58:48.393 に答える