Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 如何使用asp classic调用存储过程?_Sql_Stored Procedures_Asp Classic - Fatal编程技术网

Sql 如何使用asp classic调用存储过程?

Sql 如何使用asp classic调用存储过程?,sql,stored-procedures,asp-classic,Sql,Stored Procedures,Asp Classic,我正在使用sql server和asp classic,目前正在调用以下查询: newHireSQL = "select * from NewHire where Archived = 0 order by HireID desc" Set rsGetHireID = Server.CreateObject("ADODB.Recordset") rsGetHireID.Open newHireSQL,ConnectionString,adOpenStatic NumOfHireID = rs

我正在使用sql server和asp classic,目前正在调用以下查询:

newHireSQL = "select * from NewHire where Archived = 0 order by HireID desc"

Set rsGetHireID = Server.CreateObject("ADODB.Recordset")
rsGetHireID.Open newHireSQL,ConnectionString,adOpenStatic

NumOfHireID = rsGetHireID.RecordCount
        Set objCommand = Server.CreateObject("ADODB.Command")
        objCommand.ActiveConnection = ConnectionString
        objCommand.CommandText = "dbo.sp_selectNewHireSQL"
        objCommand.CommandType = adCmdStoredProc ' you have to include adovbs.inc file or you can use 4

        Set rsGetHireID = objCommand.Execute()
        NumOfHireID = rsGetHireID.RecordCount
        Response.Write (NumOfHireID)    
但是我不想在这里使用query语句,而是想调用一个名为
dbo.sp_selectNewHireSQL
的存储过程。我该怎么做

谢谢

编辑:

我试过这个

Dim Conn
SET Conn = Server.CreateObject("ADODB.Connection")
SET rsGetHireID = Server.CreateObject("ADODB.RecordSet")
Conn.Open ConnectionString
set rsGetHireID=Conn.Execute("Exec sp_selectNewHireSQL")

NumOfHireID = rsGetHireID.RecordCount
Response.Write (NumOfHireID)

但是我得到了记录计数的
-1
值。

它只是使用
exec
execute
语句:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnectionString
Conn.Execute "Exec sp_selectNewHireSQL"

参考:

要使RecordCount正常工作,您需要使用正确的光标:

Set rsGetHireID=Server.CreateObject(“ADODB.RecordSet”)
连接开放连接字符串
rsGetHireID.CursorLocation=3'adUseClient
rsGetHireID.打开“Exec sp_selectNewHireSQL”,康涅狄格州
NumOfHireID=rsGetHireID.RecordCount

不要使用
ADODB.Connection
,尝试使用
ADODB.Command
如下:

newHireSQL = "select * from NewHire where Archived = 0 order by HireID desc"

Set rsGetHireID = Server.CreateObject("ADODB.Recordset")
rsGetHireID.Open newHireSQL,ConnectionString,adOpenStatic

NumOfHireID = rsGetHireID.RecordCount
        Set objCommand = Server.CreateObject("ADODB.Command")
        objCommand.ActiveConnection = ConnectionString
        objCommand.CommandText = "dbo.sp_selectNewHireSQL"
        objCommand.CommandType = adCmdStoredProc ' you have to include adovbs.inc file or you can use 4

        Set rsGetHireID = objCommand.Execute()
        NumOfHireID = rsGetHireID.RecordCount
        Response.Write (NumOfHireID)    

我用你的建议更新了我原来的帖子,但是我的记录是-1。回答不好。这会使您暴露于Sql注入。传递到存储过程的参数在哪里?我在原始SQL字符串中看到一个参数(值为0):newHireSQL=“select*from NewHire where Archived=0 order by HireID desc”