t-sql ado记录集/ SQL Server

t-sql ado记录集/ SQL Server

问题描述:

我想用ADO层执行T-SQL语句。 sql语句如下:t-sql ado记录集/ SQL Server

DECLARE @var TABLE (id int) 
INSERT INTO @var SELECT id FROM tblFoo WHERE name='myName' AND idx=2 
SELECT * FROM tblFoo WHERE id IN (SELECT * FROM @var) 

在SQL Server管理控制台中一切正常。但是,如果我使用它通过Open(sql)打开ADO_Recordset,那么记录集将不会被填充/打开。 eof()表示:记录集未打开。

问题是:如何执行将导致ADO层上的记录集的T-SQL状态?

你需要把这个SQL作为纯测试 类似:

cmd.CommandType = adCmdText 

Open()方法,你需要在CommandTypeEnum.adCmdText传递的Options参数。

看到这个链接了解更多信息http://msdn.microsoft.com/en-us/library/ms675544(v=vs.85).aspx

也能改变你的查询到这一点:

SELECT * FROM tblFoo WHERE name='myName' AND idx=2 
+0

将CommandType已经在为adCmdText。 (我正在使用一个非常旧的ADO接口:ADO 2.7上的C++)是的你是对的。该查询可以写得更简单。但实际上该语句可能如下所示:SELECT * FROM tblFoo WHERE pos = 4 AND ID IN(SELECET ID FROM tblFoo WHERE pos = 3 AND name ='nameForThirdPos')AND ID IN(SELECET ID FROM tblFoo WHERE pos = 2 AND name ='nameForSecondPos') 该表包含指定位置上每个名称的分隔记录。 – Reinhard 2011-03-03 06:27:52