在下使用OracleClient在数据库中执行多条数据,使用OracleTransaction提交,CommandText的格式为" DELETE FROM YYCX.COUNT_RESULT WHERE CREATOR_ID = 42 AND YEAR_MONTH = '200611' ; DELETE FROM YYCX.DEPARTMENT WHERE CREATOR_ID = 42 AND YEAR_MONTH = '200611' ;  DELETE FROM YYCX.WAGE_PRI WHERE CREATOR_ID = 42 AND C15 = '200611' ;"
   提交后出现异常提示出现非法字符,请问是什么原因?是不是OracleClient中提交的CommandText结尾不能出现";"?请问如何分隔多条语句?
   谢谢大家!

解决方案 »

  1.   

    CommandText = @"
    begin
      delete ....;
      delete ....;
    end; ";
      

  2.   

    楼上的意思是CommandText必须用@声明么?试试看。
      

  3.   

    查了一下,发现我的程序写法与MSDN上关于OracleTransaction的用法不一样。以下是MSDN上的说明:
    **********************************************************************************
            ' Start a local transaction
            transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)
            ' Assign transaction object for a pending local transaction
            command.Transaction = transaction        Try
                command.CommandText = _
                    "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')"
                command.ExecuteNonQuery()
                command.CommandText = _
                    "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')"
                command.ExecuteNonQuery()
                transaction.Commit()
                Console.WriteLine("Both records are written to database.")
            Catch e As Exception
                transaction.Rollback()
                Console.WriteLine(e.ToString())
                Console.WriteLine("Neither record was written to database.")
            End Try
    ************************************************************************************
    如果把command多次赋给commandText属性并单独执行,最后统一commit,程序运行就没有问题了。
      

  4.   

    oracle的sql语句中的参数是用:开头的
    批量提交是可行的,我曾经用delphi实现过