2011-03-02 53 views
0

我想用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狀態?

回答

0

你需要把這個SQL作爲純測試 類似:

cmd.CommandType = adCmdText 
1

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