我有一批sql语句,例如......
插入......; 插入.... ; 删除.........;
等
当我尝试对oracle执行它们时,它会给我this错误(ORA-00911无效字符)
现在我可以理解这是因为语句之间有分号,我在SQL Server上试过这个并且它有效但是到目前为止在Oracle没有运气。
有没有办法使用ExecuteScalar或其他函数对oracle运行多个语句?
DUPLICATE :How can I execute multiple Oracle SQL statements with .NET
答案 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();
}
我的灵感来自于this在Petros告诉我之后的{{3}}帖子
PS你可能需要根据你的需要进行更改,在我的情况下,我要求连接打开,如果调用者发生了某些事情,则相应关闭。