PRB: Output Parameters Wrong after ADO Command.Execute CallID: Q167908
|
When calling a stored procedure on SQL Server 6.5 using the ActiveX Data Objects (ADO) Command.Execute method, output parameters are not returned.
The current version of the SQL Server ODBC driver (2.65.0240) returns
output parameters as the last packet it sends back to the client. The ODBC
driver is implemented such that an application must process through all of
the result sets returned by the procedure before the output parameters are
filled. For more information, please see the following article in the Microsoft Knowledge Base:
Q152174 INFO: Output Parameters, Return Codes and the ODBC Driver
If you are using Visual Basic and you are receiving a recordset back from
the Execute call, set the recordset to "Nothing" and then retrieve the
results of the output parameters. Here is a Visual Basic example of what
the code might look like:
Dim Conn1 As Connection
Dim Com1 As Command
Dim Param1 As Parameter
Dim rs As Recordset
Set Conn1 = CreateObject("ADODB.Connection")
Set Com1 = CreateObject("ADODB.Command")
Conn1.ConnectionString = "Data Source=MyDataSource;
PWD=;UID=sa;Database=pubs"
Conn1.Open
Com1.ActiveConnection = Conn1
Com1.CommandText = "{call ParamTest(?)}"
Set Param1 = Com1.CreateParameter(, adInteger, adParamOutput)
Com1.Parameters.Append Param1
Set Param1 = Nothing
Set rs = Com1.Execute()
'Free the recordset
Set rs = Nothing
' display result
Debug.Print Com1.Parameters(0)
hr= piCommand->Execute( &varRecordsAffected,
&varArray,
adCmdText,
&piRecordset);
if (FAILED(hr))goto ErrorExit;
hr= piCommand->get_Parameters(&piParameters);
if (FAILED(hr)) goto ErrorExit;
piRecordset->Release(); // Do this before get parameters.
ADOParameter * piParameter;
hr= piParameters->get_Item(COleVariant(0L),&piParameter);
if (FAILED(hr)) goto ErrorExit;
COleVariant varValue;
hr= piParameter->get_Value(&varValue);
if (FAILED(hr)) goto ErrorExit;
java users must set the recorset to null:
rs = null;
then call
system.gc();
This behavior is by design.
Additional query words: kbdse
Keywords : kbnokeyword kbADO kbVBp kbVC kbVJ kbIIS
Version : WINDOWS:1.0,1.5,2.0,4.0,5.0
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: February 13, 1999