【发布时间】:2016-01-21 20:00:47
【问题描述】:
我有一个存储过程,它接受 6 个参数、5 个输入和 1 个输出。 所有参数似乎都已正确定义(参数名称、数据类型、输入或输出、大小和值)。我的输出大小和数据类型似乎不是问题。但是我有时会收到错误消息“参数对象未正确定义运行时错误 3708”。奇怪的是,如果我在所有其他值相等(包括 CurrentCnn、adCmdStoredProc 等)且值为 OptStore 或 OptCorporate True 的情况下运行此代码,我的代码运行良好。 如果我有任何其他 Opt* 变量 True ,那么我会收到此错误。所有 strStorNo 值都是最多 3 个字符长的字符串值。我可以测试我的存储过程,它会按预期返回我的计数值以及我将在所有情况下传递的存储过程值。
这是vb6:
138 With cmdSP
140 .ActiveConnection = CurrentCNN
142 .CommandType = adCmdStoredProc
144 .CommandText = "HIcountProducts"
146 If blnUseUPCinSP Then
148 .Parameters.Append .CreateParameter("@upc", adVarChar, adParamInput, 13, objProdB.upc)
150 .Parameters.Append .CreateParameter("@cert_code", adVarChar, adParamInput, 15, Null)
152 .Parameters.Append .CreateParameter("@vendor", adInteger, adParamInput, , Null)
Else
154 .Parameters.Append .CreateParameter("@upc", adVarChar, adParamInput, 13, Null)
156 .Parameters.Append .CreateParameter("@cert_code", adVarChar, adParamInput, 15, objProdB.cert_code)
158 .Parameters.Append .CreateParameter("@vendor", adInteger, adParamInput, , Null)
End If
162 If intRetailVer = 2 Then
If OptStore.Value = True Then
.Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
.Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 3)
ElseIf OptCorporate.Value = True Then
.Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
.Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 6)
ElseIf OptZones.Value = True Then
.Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
.Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 2)
ElseIf OptRegions.Value = True Then
.Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
.Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 1)
ElseIf OptClasses.Value = True Then
.Parameters.Append .CreateParameter("@levelID", adVarChar, adParamInput, 3, strStoreNo)
.Parameters.Append .CreateParameter("@levelType", adVarChar, adParamInput, 1, 1)
End If
End If
.Parameters.Append .CreateParameter("@count", adInteger, adParamOutput, 1, 1)
166 .Execute , , adExecuteNoRecords
End With
168 intRecordCount = cmdSP.Parameters("@count")
170 Set cmdSP = Nothing
我被难住了,除了我的参数定义之外,这个未正确定义的参数对象是否还有其他引用?
【问题讨论】:
标签: sql-server vb6