经典ASP-ADO执行存储过程中传入的参数 [英] Classic ASP - ADO execute Stored Procedure passing in parameters

查看:79
本文介绍了经典ASP-ADO执行存储过程中传入的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我的存储过程参数如下:



< pre class = lang-sql prettyprint-override> @RECORD_NUMBER十进制(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& ’,&集成电路,& CI& ,和IIN& '
rsSet.Open rsString,conn,adOpenForwardOnly,adCmdText

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


错误:

ADODB.Recordset错误'800a0bb9'

参数的类型错误,超出可接受的范围或彼此冲突。


我尝试了Command东西,但出现精确错误
我是否必须使用命令对象? / p>

例如

 设置cmd =服务器.CreateObject( ADODB.Command)
'设置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)。值= Request.Form( Record_Number)


解决方案

此处就是这样,您将不需要创建记录集对象,因为它是更新存储过程:

 '设置连接
'......

'设置命令
DIM cmd
SET cmd = Server.CreateObject( ADODB.Command)
SET cmd.ActiveC onnection = Conn


'准备存储过程
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)=请求。 Form( INS_ID_NUM)

'执行存储过程
'这将返回记录集,但您不需要它
cmd。执行

Conn.Close
SET Conn =无


I am needing to pass parameters into a stored procedure with Classic ASP. I do see some people using the Command object and others NOT using it.

My sproc params are like this:

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

Then I'm trying to do this:

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

(I don't need a Recordset, i'm just trying to get it to send in data)

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

I have tried Command stuff and I get "precision" errors Do I "have" to use command object?

e.g.

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")

解决方案

Here is how you would do it, you won't need to create a recordset object since it is an update stored procedure:

'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

这篇关于经典ASP-ADO执行存储过程中传入的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆