1
我有一個存儲過程,需要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
我在這裏難倒,有別的定義不正確的,除了我的參數定義可以參考此參數對象?
我試過了,它沒有區別。根據原始文章中描述的內容,它仍然有效或中斷 – user3839756