【问题标题】:using the cmd execute in .asp and pasing a a varchar to stored procedure使用 cmd 在 .asp 中执行并将 varchar 传递给存储过程
【发布时间】:2015-09-24 16:30:15
【问题描述】:

我正在尝试在 asp 页面中使用 cmd 将值传递给存储过程,但我一直得到这个:

类型不匹配:'cint'

/default/current/purchasing.asp,第 512 行

类别列是varchar。我想我必须传递数据类型。
如果我使用int 列,我只使用int(sField_PO)

如何传递varchar 数据类型?

set prmCategory = server.CreateObject("ADODB.Parameter")
    prmCategory.Name = "@Category"
    prmCategory.Direction = 1
    prmCategory.Type = 3    'adVarChar  
    prmCategory.Value = (sField_CATEGORY)
    cmd.Parameters.append prmCategory   

【问题讨论】:

  • purchase.asp 的第 512 行是什么?
  • adVarChar 是 200 不是 3。 (使用 ADOVBS.INC 或 ADO Typelib 将允许按名称使用这些枚举值)
  • 速记; cmd.Parameters.Append cmd.CreateParameter("@Category", 200, 1, , sField_CATEGORY)
  • 第 512 行是 prmCategory.Value = (sField_CATEGORY)
  • 这里是代码,下面是我得到的响应:set prmCategory = server.CreateObject("ADODB.Parameter") prmCategory.Name = "@Category" prmCategory.Direction = 1 prmCategory。 Type = 200 'adVarChar prmCategory.Value = (sField_CATEGORY) cmd.Parameters.Append prmCategoryParameter 对象定义不正确。提供的信息不一致或不完整。 /default/current/purchasing.asp,第 513 行(即 cmd.Parameters.append 行

标签: sql asp-classic ado


【解决方案1】:

已经试过了吗?

set objCmd = Server.CreateObject("ADODB.Command")
with objCmd
    .ActiveConnection   = MyConnection
    .CommandType        = 4 'adCmdStoredProc
    .CommandText        = "MY STORED PROCEDURE NAME"
    .Parameters.Append .CreateParameter("@Category", 200, 1, 255, sField_CATEGORY)
    .Execute
end with
set objCmd = nothing

如果包含类型库,则可以使用常量代替数字

<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" --> 
set objCmd = Server.CreateObject("ADODB.Command")
with objCmd
    .ActiveConnection   = MyConnection
    .CommandType        = adCmdStoredProc
    .CommandText        = "MY STORED PROCEDURE NAME"
    .Parameters.Append .CreateParameter("@Category", adVarChar, adParamInput, 255, sField_CATEGORY)
    .Execute
end with
set objCmd = nothing

【讨论】:

  • 感谢 Silento..但如果我使用输入值,我会照常工作,而且我有几列要更新..这是代码..我必须发送几个不同的 cmets ...
  • dim cmd dim prmClient set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = db cmd.CommandType = 4 'adCmdStoredProc cmd.CommandText = "p_InfoSYNC_Order_Insert" set prmClient = server.CreateObject ("ADODB.Parameter") prmClient.Name = "@Client" prmClient.Direction = 1 'adParamInput prmClient.Type = 3 'adInteger prmClient.Value = 1 cmd.Parameters.append prmClient set prmstore = server.CreateObject("ADODB. Parameter") prmStore.Name = "@Store" prmStore.Direction = 1 prmStore.Type = 3 prmstore.Value = cint(sField_STORE) cmd.Parameters.append prmStore
  • 设置 prmPO = server.CreateObject("ADODB.Parameter") prmPO.Name = "@PO" prmPO.Direction = 1 'adParamInput prmPO.Type = 20 prmPO.Value = cint(sField_PO) cmd .Parameters.append prmPO 设置 prmCategory = server.CreateObject("ADODB.Parameter") prmCategory.Name = "@Category" prmCategory.Direction = 1 prmCategory.Type = 3 prmCategory.Value = 2 '(sField_CATEGORY) cmd.Parameters.append prmCategory 设置 prmItemCode = server.CreateObject("ADODB.Parameter") prmItemCode.Name = "@ItemCode" prmItemCode.Direction = 1 prmItemCode.Type = 3 prmItemCode.Value = 3 '(sField_ITEMCODE) cmd.Parameters.append prmItemCode
  • 设置 prmDesc = server.CreateObject("ADODB.Parameter") prmDesc.Name = "@Desc" prmDesc.Direction = 1 prmDesc.Type = 3 prmDesc.Value = 4 '(sField_DESC) cmd。 Parameters.append prmDesc set prmDistributor = server.CreateObject("ADODB.Parameter") prmDistributor.Name = "@Distributor" prmDistributor.Direction = 1 prmDistributor.Type = 3 prmDistributor.Value = 5 '(sField_DIST) cmd.Parameters.append prmDistributor
  • @BradJarrett:请(edit 和)把所有这些都放在你原来的问题中!
猜你喜欢
  • 2015-01-02
  • 1970-01-01
  • 2021-08-13
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多