by Martin
3. September 2010 09:22
Vid ett försök att använda Excel-makron för att anropa procedurer i SQL Server stötte jag på nedanstående felmeddelande
{{
Parameter object is improperly defined. Inconsistent or incomplete information was provided.
}}
Den kod jag försökte köra var ungefär följande:
{code:vb.net}
oCmd2.CommandText = "sp_addextendedproperty"
oCmd2.ActiveConnection = oCon.ConnectionString
oCmd2.CommandType = adCmdStoredProc
' Hämta parametrar
oCmd2.Parameters.Refresh
' Sätt parametrar
oCmd2.Parameters("@name").Value = sExProp
oCmd2.Parameters("@value").Value = CVar(sValue)
oCmd2.Parameters("@level0type").Value = "SCHEMA"
oCmd2.Parameters("@level0name").Value = sSchema
oCmd2.Parameters("@level1type").Value = "TABLE"
oCmd2.Parameters("@level1name").Value = sTable
oCmd.Parameters("@level2type").Value = vbNull
oCmd.Parameters("@level2name").Value = vbNull
oCmd2.Execute
If Err.Number <> 0 Then
Debug.Print Err.Description
End If
{code:vb.net}
Det tog lång tid för mig att förstå vad problemet egentligen var. Slutligen visade det sig att det hade med parametern @value att göra. Den var nämligen av datatypen sql_variant men i ADO översattes den till typen adVarBinary.
Lösningen blev att hårt ändra den till adVarWChar istället och sätta en lämplig längd på den.