Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在ASP Classic中调用SQL Server存储过程时关闭对象时,不允许执行获取操作_Sql Server_Stored Procedures_Asp Classic - Fatal编程技术网

Sql server 在ASP Classic中调用SQL Server存储过程时关闭对象时,不允许执行获取操作

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

在我的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 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