使用MSADO15封装的Recordset15::Open方法传入多行TSQL语句时,例如:
CString strQuery("BEGIN INSERT INTO tb VALUES('a',1) SELECT @@IDENTITY AS RESULTID END")
执行recordSet.Open(strQuery,...)后,发现没有返回结果,也就是SELECT @@IDENTITY AS RESULTID这句执行无效,但是INSERT的语句执行成功了,但是如果把INSERT 语句和SELECT语句分成两个Open方法执行,则可以得到SELECT的返回结果,
开始怀疑是Open方法不能执行多句SQL,但实际我连续写两条INSERT INTO语句用Open执行发现是可以插入两条数据的,但是接在后面的SELECT仍然无法返回结果(从recordSet中查询返回结果)
以上语句是随便打的,真实语句在SQL Server查询分析器中直接执行是成功的,所以不用怀疑语法问题
寻求解决方案~存储过程之类的就不用了,就是不想用存储过程才想直接用T-SQL语句完成的,求教~

解决方案 »

  1.   

    我知道可以用存储过程去处理,但是我这里不想用那个,因为用COM组建调用存储过程比较麻烦,而且这个语句是很简单的,一共也才两句
      

  2.   

    可以执行多条,用下面的方式试一下
    CString strQuery("INSERT INTO tb VALUES('a',1) \n SELECT @@IDENTITY AS RESULTID")
      

  3.   

    @@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。
    从你上面的程序看,应该是表里面没有一个自动生成的标识值(比如一个自增的ID)导致的执行无效。
      

  4.   

    注意:但是如果把INSERT 语句和SELECT语句分成两个Open方法执行,则可以得到SELECT的返回结果