当我将 2 个参数传递给存储过程的 Exec 代码时,我的经典 ASP 页面出现错误。基本上我想发送 1 个参数来覆盖我正在寻找的列和一个用于搜索词的列。例如纽约大学的 imSchool。我对发送的数据以及 Record Set.State 代码进行了数据检查,显示每次我选择带有两个参数的 SQL Query 时都会出现错误“对象关闭时不允许操作”。总是显示。我试图在“While Not rs.EOF”代码行打开对象,它出错了一点运气。我认为我的 SQLQuery 很糟糕,因为当我在 MSSQL 中使用相同的输入运行存储过程时,我每次都会得到一个返回表。SQL Server 2008 R2 和经典 ASP。
这是我的带有 SQLQUERY 代码的 IF 语句(请记住第一个工作正常,并且从数据库中选择数据)
SQLQuery = "Exec sp_vw_InternImport"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.Open SQLQuery, OBJdbConnection
If filterColmn <> "" Then
SQlQuery = "Exec sp_vw_InternImport_ColID @LookUpID=N'" + filterID + "'" + ", @LookUpCol=N'" + filterID + "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.Open SQLQuery, OBJdbConnection
End If
这是我的存储过程代码
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_vw_InternImport_ColID]
(
@LookUpID nvarchar (255),
@LookUpCol nvarchar (50)
)
AS
SET NOCOUNT ON
BEGIN
IF @LookUpCol = 'imYear'
SELECT * FROM v_InternImport WHERE imYear = @LookUpID
ELSE
IF @LookUpCol = 'imSchool'
SELECT * FROM v_InternImport WHERE imSchool = @LookUpID
ELSE
IF @LookUpCol = 'imDiscipline'
SELECT * FROM v_InternImport WHERE imDiscipline = @LookUpID
IF @LookUpCol = 'imDegree'
SELECT * FROM v_InternImport WHERE imDegree = @LookUpID
END