首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server记录集临时表是否过早关闭?

Server记录集临时表是否过早关闭?
EN

Stack Overflow用户
提问于 2012-07-19 20:27:27
回答 4查看 1.2K关注 0票数 1

当我通过Server 2008运行SQL时,它工作得很好。然而,当我将它添加到一个经典的ASP网页,然后从那里调用它时,它似乎会崩溃。我不知道我错过了什么?

代码语言:javascript
运行
复制
sql = ""
sql = sql & " DECLARE @listStr VARCHAR(MAX)"

sql = sql & " DECLARE @temp TABLE ("
sql = sql & " DistID varchar(30),"
sql = sql & " FName varchar(30),"
sql = sql & " LName varchar(30),"
sql = sql & " RankID int, "
sql = sql & " PSV int,"
sql = sql & " ShipCountry varchar(30),"
sql = sql & " ShipState varchar(30) )"

sql = sql & " INSERT INTO @temp"
sql = sql & " EXEC  [dbo].[MSGGetList]"
sql = sql & " @List = N'" & request("report_type") & "',"
sql = sql & " @DistID = " & Session("DistributorID") & ","
sql = sql & " @BusCtrID = 1,"

' Autoship Filter Params
If request("autoship") <> "" Then
    sql = sql & " @FilterAutoship = '" & request("autoship") & "',"
Else
    sql = sql & " @FilterAutoship = NULL,"
End If

sql = sql & " @ItemID = " & request("item_id") & ","

' Order Filter Params
If request("orders") <> "" Then
    sql = sql & " @Orders = '" & request("orders") & "',"
Else
    sql = sql & " @Orders = NULL,"
End If

If request("minvol") <> "" Then
    sql = sql & " @MinVol = " & request("minvol") & ","
Else
    sql = sql & " @MinVol = NULL,"
End If

If request("minpostamt") <> "" Then
    sql = sql & " @MinPostAmt = " & request("minpostamt") & ","
Else
    sql = sql & " @MinPostAmt = NULL,"
End If

If request("startdate") <> "" Then
    sql = sql & " @DateStart = '" & request("startdate") & "',"
Else
    sql = sql & " @DateStart = NULL,"
End If

If request("enddate") <> "" Then
    sql = sql & " @DateEnd = '" & request("enddate") & "',"
Else
    sql = sql & " @DateEnd = NULL,"
End If

' Location Filter Params
If request("country") <> "" Then
    sql = sql & " @Country = '" & request("country") & "',"
Else
    sql = sql & " @Country = NULL,"
End If

If request("region") <> "" Then
    sql = sql & " @Region = '" & request("region") & "',"
Else
    sql = sql & " @Region = NULL,"
End If

' Rank Filter Params
If request("rankid") <> "" Then
    sql = sql & " @RankID = '" & request("rankid") & "',"
Else
    sql = sql & " @RankID = NULL,"
End If

'Do Not send list
If request("DoNotSend") <> "" Then
    sql = sql & " @Exempt = '" & request("DoNotSend") & "',"
End If

' Volume Filter Params
sql = sql & " @MinPV = " & request("min_pv") & ","
sql = sql & " @MaxPV = " & request("max_pv") & ","
sql = sql & " @MinGV = " & request("min_gv") & ","
sql = sql & " @MaxGV = " & request("max_gv") & ","
sql = sql & " @MinLBVRBV = NULL"
sql = sql & " SELECT @listStr = COALESCE(@listStr+',' ,'') + DistID FROM @temp"
sql = sql & " SELECT @listStr AS ToList"
stop
response.write(sql & "<br />")
Set rsToList = GetRecordSet(sql)


response.Write(rsToList("ToList"))

当我遍历代码并查看rsToList时,它说:

当对象关闭时不允许进行操作。

知道我在这里错过了什么吗?!

编辑:

代码语言:javascript
运行
复制
Function getRecordset(strSQL)

        If Application("DebugSQL") Then
            Call WriteSQL(strSQL)
        End If

        'Create Database Connection
        Set FunctionDBConn = Server.CreateObject("ADODB.Connection")
        FunctionDBConn.ConnectionTimeout = 180
        FunctionDBConn.Open(Application("DB_ConnectionString"))
        Set adoRS = Server.CreateObject("ADODB.Recordset")

        adoRS.CursorLocation = 3
        adoRS.LockType = 4

        'Create Recordset
        adoRS.Open strSQL, FunctionDBConn
        Set adoRS.ActiveConnection = Nothing
        Set GetRecordset = adoRS

        'Close Database Connection
        FunctionDBConn.Close
        Set FunctionDBConn = Nothing

    End Function
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-26 17:32:20

问题是@temp表。我将该功能添加到存储过程中,并移除temp表,它就正常工作了。

票数 1
EN

Stack Overflow用户

发布于 2012-07-19 20:37:35

我们能看看你的GetRecordSet方法吗?

听起来像是在方法中关闭连接。

您必须等到处理完记录集后才能关闭连接。

考虑将连接传递到方法中,或者使其成为可以在方法之外关闭的页级变量。

票数 1
EN

Stack Overflow用户

发布于 2012-07-19 21:48:08

此错误通常通过以下语句开始SQL批处理来解决:

代码语言:javascript
运行
复制
SET NOCOUNT ON
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11568778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档