在ADO Recordset中使用临时表

时间:2015-01-21 14:04:44

标签: tsql vb6

请参阅以下代码:

rsTitle.Open "CREATE TABLE #TestTable (testtitle varchar(10)) INSERT INTO #TestTable values ('TestTitle') select * from #testtable", objCon.ActiveCon, adOpenStatic, adLockReadOnly

在执行上面的行后,rsTitle始终关闭。为什么是这样?它应该返回一行。

2 个答案:

答案 0 :(得分:1)

尝试使用SET NOCOUNT ON。将SET NOCOUNT ON放在与ADO一起使用的SQL语句中,如下所示:

Dim adoCn As adoDb.Connection
Dim adoCm As adoDb.Command
Dim rsTitle As adoDb.Recordset

Set adoCn = New adoDb.Connection
...    
Set adoCm = New adoDb.Command
With adoCm
    Set .ActiveConnection = adoCn
    .CommandType = adCmdText
    .CommandText = "CREATE TABLE #TestTable (testtitle varchar(10)) " & _
                   "INSERT INTO #TestTable(testtitle) values ('TestTitle') " & _
                   "SELECT * FROM #TestTable go"
    .Execute 
End With

Set rsTitle = New adoDb.Recordset
With rsTitle
    Set .ActiveConnection = adoCn
    .Open "SET NOCOUNT ON"
End With
rsTitle.Open adoCm, , , ,

答案 1 :(得分:0)

对于那种混合DDL + SELECT语句,你最好:

Set rstitle = objCon.ActiveCon.Execute("SET NOCOUNT ON; CREATE TABLE #TestTable (testtitle varchar(10)); INSERT #TestTable values ('TestTitle'); select * from #testtable", adCmdText)