Determine the datatype of a return parameter value generated by a stored procedure.
int dbrettype(dbproc, retnum) DBPROCESS *dbproc; int retnum;
A pointer to the DBPROCESS structure that provides the connection for a particular front-end/server process. It contains all the information that DB-Library uses to manage communications and data between the front end and server.
The number of the return parameter value of interest. The first return value is 1. Values are returned in the same order as the parameters were originally specified in the stored procedure’s create procedure statement. (Note that this is not necessarily the same order as specified in the remote procedure call.) When specifying retnum, non-return parameters do not count. For example, if the second parameter in a stored procedure is the only return parameter, its retnum is 1, not 2.
A token value for the datatype of the specified return value.
In a few cases, the token value returned by this routine may not correspond exactly with the column’s server datatype:
SYBVARCHAR is returned as SYBCHAR.
SYBVARBINARY is returned as SYBBINARY.
SYBDATETIMN is returned as SYBDATETIME.
SYBMONEYN is returned as SYBMONEY.
SYBFLTN is returned as SYBFLT8.
SYBINTN is returned as SYBINT1, SYBINT2, or SYBINT4, depending on the actual type of the SYBINTN.
If retnum is out of range, -1 is returned.
dbrettype returns the datatype of a return parameter value generated by a stored procedure. It is useful in conjunction with remote procedure calls and execute statements on stored procedures.
Transact-SQL stored procedures can return values for specified “return parameters.” Changes made to the value of a return parameter inside the stored procedure are then available to the program that called the procedure. This is analogous to the “pass by reference” facility available in some programming languages.
For a parameter to function as a return parameter, it must be declared as such within the stored procedure. The execute statement or remote procedure call that calls the stored procedure must also indicate that the parameter should function as a return parameter. In the case of a remote procedure call, it is the dbrpcparam routine that specifies whether a parameter is a return parameter.
When executing a stored procedure, the server returns any parameter values immediately after returning all other results. Therefore, the application can call dbrettype only after processing the stored procedure’s results by calling dbresults, as well as dbnextrow if appropriate. (Note that a stored procedure can generate several sets of results—one for each select it contains. Before the application can call dbrettype or any other routines that process return parameters, it must call dbresults and dbnextrow as many times as necessary to process all the results.)
If the stored procedure is invoked with a remote procedure call, the return parameter values are automatically available to the application. If, on the other hand, the stored procedure is invoked with an execute statement, the return parameter values are available only if the command batch containing the execute statement uses local variables, not constants, for the return parameters.
dbrettype actually returns an integer token value for the datatype (SYBCHAR, SYBFLT8, and so on). To convert the token value into a readable token string, use dbprtype. See the dbprtype reference page for a list of all token values and their equivalent token strings.
For a list of server datatypes, see Types.
The routines return additional information about return parameter values:
dbnumrets returns the total number of return parameter values.
dbretdata returns a pointer to a parameter value.
dbretlen returns the length of a parameter value.
dbretname returns the name of a parameter value.
dbconvert converts the value to another datatype, if necessary.
For an example of this routine, see the dbretdata reference page.
dbnextrow, dbnumrets, dbprtype, dbresults, dbretdata, dbretlen, dbretname, dbrpcinit, dbrpcparam