我有一批 sql 语句,例如...
插入.... ; 插入.... ; 删除 .........;
ETC
当我尝试对 oracle 执行它们时,它给了我这个错误(ORA-00911 无效字符)
现在我可以理解这是因为语句之间的分号,我在 SQL Server 上尝试过它并且它工作但在 Oracle 中到目前为止没有运气。
有没有办法通过使用 ExecuteScalar 或其他函数对 oracle 运行多个语句?
我有一批 sql 语句,例如...
插入.... ; 插入.... ; 删除 .........;
ETC
当我尝试对 oracle 执行它们时,它给了我这个错误(ORA-00911 无效字符)
现在我可以理解这是因为语句之间的分号,我在 SQL Server 上尝试过它并且它工作但在 Oracle 中到目前为止没有运气。
有没有办法通过使用 ExecuteScalar 或其他函数对 oracle 运行多个语句?
尝试用BEGIN..END
BEGIN insert into.... ; insert into.... ; delete .........; END;
尝试 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您可能需要根据您的需要进行更改,在我的情况下,我需要打开连接,并在调用者发生某些事情时相应地关闭。