【问题标题】:Run multiple commands in one ExecuteScalar in Oracle在 Oracle 的一个 ExecuteScalar 中运行多个命令
【发布时间】:2010-10-15 17:04:03
【问题描述】:

我有一批sql语句如...

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

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

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

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


复制How can I execute multiple Oracle SQL statements with .NET

【问题讨论】:

    标签: sql oracle executescalar ora-00911


    【解决方案1】:

    尝试使用 BEGIN..END 包装

    BEGIN insert into.... ; insert into.... ; delete .........; END;
    

    【讨论】:

    • 在 SQL Developer 中为我工作。在我想起之后; END 之后。
    【解决方案2】:

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

    我的灵感来自thisPetros 告诉我的帖子

    PS 您可能需要根据自己的需要进行更改,在我的情况下,我需要打开连接,并在调用者发生某些事情时相应地关闭。

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多