6

我有一批 sql 语句,例如...

插入.... ; 插入.... ; 删除 .........;

ETC

当我尝试对 oracle 执行它们时,它给了我这个错误(ORA-00911 无效字符)

现在我可以理解这是因为语句之间的分号,我在 SQL Server 上尝试过它并且它工作但在 Oracle 中到目前为止没有运气。

有没有办法通过使用 ExecuteScalar 或其他函数对 oracle 运行多个语句?


重复如何使用 .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 回答