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
将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