Re: Stored procedure output/return parameters

"James K. Lowden" <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
Gunther Van Butsele wrote:
> I've been collecting logging information to debug my problem with output
> parameters not getting filled in php using the freetds functions.
>  
> I've attached an archive with every bit of info I could gather:
>  
>    stored_procedure_creation.sql - The stored procedure itself
>    script.php - PHP script that calls the stored procedure
>    sql_profiler.log - MS SQL Profiler log entry for the call to the
> stored procedure
>    tdsdump.log - TDSDUMP log, probably most useful to you

We can see from the TDSDUMP log that the parameter value is being returned
to the client:  

token.c:526:processing result tokens.  marker is  ac(PARAM)
read.c:179:tds_get_string: reading 16 from wire to give 8 to client.
token.c:1526:processing result. type = 38(integer-null), varint_size 1
token.c:1547:processing result. column_size 1
token.c:1863:tds_get_data: column 0, type 38, varint size 1
token.c:1920:processing row.  column size is 1 

and I'm willing to believe db-lib makes the parameter available to the
application because src/dblib/unittests/rpc.c works.  So I think the
difficulty lies further up the stack.  

There was a problem some years back with output parameters.  The issue was
when, in the dbresults-dbnextrow loops, the parameter data are available. 
IOW, when is it safe to call dbretdata()?  The documented answer: after
dbresults returns NO_MORE_RESULTS.  

HTH.  

--jkl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.