在Oracle中的一个ExecuteScalar中运行多个命令

时间:2009-03-26 13:42:59

标签: sql oracle executescalar ora-00911

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

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

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

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

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


DUPLICATE How can I execute multiple Oracle SQL statements with .NET

2 个答案:

答案 0 :(得分:7)

尝试使用BEGIN..END

进行换行
BEGIN insert into.... ; insert into.... ; delete .........; END;

答案 1 :(得分: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();
    }

我的灵感来自于thisPetros告诉我之后的{{3}}帖子

PS你可能需要根据你的需要进行更改,在我的情况下,我要求连接打开,如果调用者发生了某些事情,则相应关闭。