Sql server 在ASP Classic中调用SQL Server存储过程时关闭对象时,不允许执行获取操作
在我的asp经典代码中,我想调用一个存储过程。然而,如果我尝试,我会得到Sql server 在ASP Classic中调用SQL Server存储过程时关闭对象时,不允许执行获取操作,sql-server,stored-procedures,asp-classic,Sql Server,Stored Procedures,Asp Classic,在我的asp经典代码中,我想调用一个存储过程。然而,如果我尝试,我会得到 Operation is not allowed when the object is closed. ASP代码: dim soc dim sql dim dbConn dim adRsTKIDEmpNum set soc = Request.QueryString("id_list") set dbConn = Server.CreateObject("ADODB.Connection") set adRs
Operation is not allowed when the object is closed.
ASP代码:
dim soc
dim sql
dim dbConn
dim adRsTKIDEmpNum
set soc = Request.QueryString("id_list")
set dbConn = Server.CreateObject("ADODB.Connection")
set adRsTKIDEmpNum = Server.CreateObject("ADODB.Recordset")
dbConn.Open Application("System_ConnectionString")
sql = "sp_getEmployeeDetail '2411, 3468'"
adRsTKIDEmpNum.Open sql, dbConn, 1
do while not adRsTKIDEmpNum.EOF
loop
Response.write sql
当我调用do而不是adRsTKIDEmpNum.EOF
时,我得到了错误
存储过程
Alter Procedure dbo.sp_getEmployeeDetail
@IDList varchar (max)
As
Declare @EmployeeDetail table(ID int,Employee_Number int)
insert into @EmployeeDetail(ID, Employee_Number)
select A.Item, B.employee_number from people.dbo.udf_Split(@IDList, ',') A
left join people.dbo.employee B on A.Item=B.ID
select * from @EmployeeDetail
GO
有人知道怎么了吗
谢谢没有回答您的问题,但您应该避免在程序名称中使用sp_uu前缀。此外,我看到的大多数拆分器效率都非常低。你可以看一下这个,看看你的拆分器是否合适。我在这里看到的另一个问题是,您没有参数化sql,而是直接执行查询字符串值。这是bobby tables访问的开放邀请。这是导致错误的原因吗?将循环放入条件块中,以检查记录集对象是否实际打开。您必须在AS:SET NOCOUNT ON之后立即将代码行放入存储过程
Alter Procedure dbo.sp_getEmployeeDetail
@IDList varchar (max)
As
SET NOCOUNT ON
Declare @EmployeeDetail table(ID int,Employee_Number int)
insert into @EmployeeDetail(ID, Employee_Number)
select A.Item, B.employee_number from people.dbo.udf_Split(@IDList, ',') A
left join people.dbo.employee B on A.Item=B.ID
select * from @EmployeeDetail
GO