vb中我定义了一个函数ExecuteSQLORA 如下:
Public Function ExecuteSQLORA(strSQL As String) As Object
 Dim OraSession As Object
 '定义OraSession和OraDatabase为OLE对象
 Dim OraDatabase As Object
 '创建一个OraSession对象
 Set objSession = CreateObject("OracleInProcServer.XOraSession")
 '通过打开一个对Oracle的连接创建数据库对象
 Set objDatabase = objSession.OpenDatabase("myoracle", "cgsys/cgsys", 0)
 Set oraDynaSet = objDatabase.DBCreateDynaset(strSQL, 0)
 Set ExecuteSQLORA = oraDynaSet
End Function
我拼装了一个字符串:
SQL="INSERT INTO TRAIN_INFO_T(ID,TRAIN_NO,SUPPLY_UNIT,MAO_WEIGHT,PI_WEIGHT,JING_WEIGHT,MAO_TIME) VALUES ( 1,4874277,'销售公司',77.98,22.1,55.88,'200807141617');
INSERT INTO TRAIN_INFO_T(ID,TRAIN_NO,SUPPLY_UNIT,MAO_WEIGHT,PI_WEIGHT,JING_WEIGHT,MAO_TIME) VALUES ( 3,1411010,'销售公司',75.3,19.8,55.5,'200807141621');
INSERT INTO TRAIN_INFO_T(ID,TRAIN_NO,SUPPLY_UNIT,MAO_WEIGHT,PI_WEIGHT,JING_WEIGHT,MAO_TIME) VALUES ( 4,4833525,'销售公司',77.12,22,55.12,'200807141622'); "
然后将该字符串传递给函数ExecuteSQLORA(SQL),结果出现错误: 实时错误'440'
SQL execution error,ORA-00911:invalid character我原以为是sql语句有问题,结果我到oracle数据库中执行该sql语句,没有问题,请问这是怎么回事?

解决方案 »

  1.   

    一次只执行一个INSERT呢,会不会出错?
    若不出错,那就在一个事务里循环插入SQL.
      

  2.   

    一次只执行一个INSERT 也出错!
    我已经测试过!
      

  3.   

    试试去掉'; '号,一次插入一条。
    如果可行,则可以用以下方式插入数据:insert into table (field1,field2...)
    select 'value1','value2'... from dual union all
    select 'value3','value4'... from dual union all
    ...
      

  4.   

    还有一个可能的原因是DBCreateDynaset只能处理select sql,你可以换成OraSQLstmt试试看。
    没用过Oracle Object Server,瞎猜的。
      

  5.   

    Insert/Update 要用Odatabase的executesql
      

  6.   

    测试不能执行:实时错误'440'
    sql execution error .ORA-00911:invalid character
      

  7.   

    估计不支持批量执行,每个INSERT要单独调用executesql。
      

  8.   

    每个字段的数据类型是否一样.字符串是不能加给数值型的.invalid character:检查下字符中是否有全角字符?