stored-procedures - 经典 ASP - ADO 执行传递参数的存储过程

标签 stored-procedures asp-classic ado

我需要使用经典 ASP 将参数传递到存储过程中。我确实看到有些人使用 Command 对象而其他人不使用它。

我的 sproc 参数是这样的:

@RECORD_NUMBER decimal(18,0),
@ErrorType nvarchar(100),
@INSURANCE_CODE smallint,
@CompanyId int,
@INS_ID_NUM nchar(22)   

然后我试图这样做:

Dim conn, rsSet,rsString, cmd

Dim RN,ET,IC,CI,IIN
RN = Request.Form("Record_Number")
ET = Request.Form("ErrorType")
IC = Request.Form("INSURANCE_CODE")
CI = Request.Form("CompanyID")
IIN = Request.Form("INS_ID_NUM")

set conn = server.CreateObject("adodb.connection")
set rsSet = Server.CreateObject ("ADODB.Recordset")


conn.Open Application("conMestamed_Utilities_ConnectionString")
rs_string = "apUpdateBill " & RN &",'" &  ET & "'," & IC & "," & CI & ",'" & IIN & "'"
rsSet.Open rsString, conn, adOpenForwardOnly,, adCmdText

(我不需要 Recordset,我只是想让它发送数据)

Error:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.



我试过命令的东西,但我得到了“精确”错误
我“必须”使用命令对象吗?

例如

Set cmd = Server.CreateObject("ADODB.Command")
'Set cmd.ActiveConnection = conn
'cmd.CommandText = "apUpdateBill"
'cmd.CommandType = adCmdStoredProc
'Cmd.Parameters.append Cmd.createParameter("@Record_Number", adDecimal, adParamInput, 18)
'Cmd.Parameters("@Record_Number").Precision = 0
'Cmd.Parameters("@Record_Number").value = Request.Form("Record_Number")

最佳答案

这是您的操作方法,您不需要创建记录集对象,因为它是一个更新存储过程:

'Set the connection
'...............

'Set the command
DIM cmd
SET cmd = Server.CreateObject("ADODB.Command")
SET cmd.ActiveConnection = Conn


'Prepare the stored procedure
cmd.CommandText = "apUpdateBill"
cmd.CommandType = 4  'adCmdStoredProc

cmd.Parameters("@RECORD_NUMBER") = Request.Form("Record_Number") 
cmd.Parameters("@ErrorType") = Request.Form("ErrorType") 
cmd.Parameters("@INSURANCE_CODE") = Request.Form("INSURANCE_CODE")
cmd.Parameters("@CompanyId") = Request.Form("CompanyID") 
cmd.Parameters("@INS_ID_NUM") = Request.Form("INS_ID_NUM")

'Execute the stored procedure
'This returns recordset but you dont need it
cmd.Execute

Conn.Close
SET Conn = Nothing

关于stored-procedures - 经典 ASP - ADO 执行传递参数的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21561657/

相关文章:

mysql - 如何在 ADO.NET 中使用 MySQL 用户变量

c++ - ADO:如何使用取消功能同步执行查询?

sql-server - 如何在SQL Server事务中设置 "SET XACT_ABORT ON "?

mysql - 什么版本的MYSQL支持存储过程?

sql-server - 这是出于某种跟踪目的而修改我的 URL 的机器人吗?

c++ - 是否可以使用 ADODB::_RecordsetPtr 对象作为成员数据?

sql - 如何将这个大查询变成存储过程

java - MySQL - Java 和 MySQL 过程和函数的集成问题

html - 输入框名称 : Why name it with a [ ]?

html - 用户特定的样式表?