So I figured this out on my own. After digging though some logs I saw an error which I hadn't spotted previously:
Object_doesn't_support_this_property_or_method:_'Close'
Turns out I was incorrectly trying to close the command object: objCommand.Close
My working solution is:
Dim fpart, objCommand, objRecordset
fpart = "SMF10320BRNU12"
Set objCommand = Server.CreateObject("ADODB.Command")
With objCommand
.ActiveConnection = db
.CommandText = "sp_movements"
.CommandType = 4
.CommandTimeout = 240
.Parameters.Append .CreateParameter("@part", 200, 1, 20)
.Parameters("@part") = fpart
Set objRecordset = .Execute
End With
Do until objRecordset.EOF
for each x in objRecordset.Fields
Response.Write(x.name)
Response.Write(" = ")
Response.Write(x.value & "<br />")
next
Response.Write("<br />")
objRecordset.MoveNext
loop
objRecordset.Close
Set objRecordset = nothing
Set objCommand = nothing
Note:
This code also has a Do until loop around added to output all the rows from the recordset, but that wasn't strictly necessary to get something output on the page.
EDIT
Edited to reflect comments from Lankymart below, I did need to close the recordset.