## SourcePro® API Reference Guide

Product Documentation:
SourcePro
Documentation Home
RWDBStoredProc Class Reference

Encapsulates a database stored procedure, providing a uniform API to the common operations related to them. More...

#include <rw/db/stored.h>

## Public Types

enum  CacheType { Local, All }

## Public Member Functions

RWDBStoredProc ()

RWDBStoredProc (const RWDBStoredProc &proc)

void acquire () const

RWDBStatus clear ()

void clearCache (CacheType cache=RWDBStoredProc::Local)

RWDBDatabase database () const

RWDBStatus drop ()

RWDBStatus drop (const RWDBConnection &connection)

RWDBStatus::ErrorHandler errorHandler () const

RWDBResult execute ()

RWDBResult execute (const RWDBConnection &connection)

bool exists (bool forceLookup=false) const

bool exists (const RWDBConnection &connection, bool forceLookup=false) const

RWDBStatus fetchReturnParams ()

bool isNull (const RWDBColumn &column) const

bool isNull (const RWCString &name) const

bool isNull (size_t index) const

bool isValid () const

RWCString name () const

RWDBStoredProcoperator<< (RWDBValueManip value)

RWDBStoredProcoperator<< (const RWDBValue &value)

RWDBStoredProcoperator<< (char value)

RWDBStoredProcoperator<< (unsigned char value)

RWDBStoredProcoperator<< (short value)

RWDBStoredProcoperator<< (unsigned short value)

RWDBStoredProcoperator<< (int value)

RWDBStoredProcoperator<< (unsigned int value)

RWDBStoredProcoperator<< (long value)

RWDBStoredProcoperator<< (unsigned long value)

RWDBStoredProcoperator<< (long long value)

RWDBStoredProcoperator<< (unsigned long long value)

RWDBStoredProcoperator<< (float value)

RWDBStoredProcoperator<< (double value)

RWDBStoredProcoperator<< (long double value)

RWDBStoredProcoperator<< (const RWDecimalPortable &value)

RWDBStoredProcoperator<< (const RWDate &value)

RWDBStoredProcoperator<< (const RWDateTime &value)

RWDBStoredProcoperator<< (const RWDBDateTime &value)

RWDBStoredProcoperator<< (const RWDBDuration &value)

RWDBStoredProcoperator<< (const RWCString &value)

RWDBStoredProcoperator<< (const RWDBMBString &value)

RWDBStoredProcoperator<< (const RWBasicUString &value)

RWDBStoredProcoperator<< (const RWWString &value)

RWDBStoredProcoperator<< (const RWDBBlob &value)

RWDBStoredProcoperator<< (const RWDBBoundExpr &value)

RWDBStoredProcoperator<< (short *valPtr)

RWDBStoredProcoperator<< (unsigned short *valPtr)

RWDBStoredProcoperator<< (int *valPtr)

RWDBStoredProcoperator<< (unsigned int *valPtr)

RWDBStoredProcoperator<< (long *valPtr)

RWDBStoredProcoperator<< (unsigned long *valPtr)

RWDBStoredProcoperator<< (long long *valPtr)

RWDBStoredProcoperator<< (unsigned long long *valPtr)

RWDBStoredProcoperator<< (float *valPtr)

RWDBStoredProcoperator<< (double *valPtr)

RWDBStoredProcoperator<< (long double *valPtr)

RWDBStoredProcoperator<< (RWDecimalPortable *valPtr)

RWDBStoredProcoperator<< (RWDate *valPtr)

RWDBStoredProcoperator<< (RWDateTime *valPtr)

RWDBStoredProcoperator<< (RWDBDateTime *valPtr)

RWDBStoredProcoperator<< (RWDBDuration *valPtr)

RWDBStoredProcoperator<< (RWDBBlob *valPtr)

RWDBStoredProcoperator<< (RWCString *valPtr)

RWDBStoredProcoperator<< (RWDBMBString *valPtr)

RWDBStoredProcoperator<< (RWBasicUString *valPtr)

RWDBStoredProcoperator<< (RWWString *valPtr)

RWDBStoredProcoperator= (const RWDBStoredProc &proc)

RWDBStoredProcoperator[] (const RWDBColumn &paramColumn)

RWDBStoredProcoperator[] (const RWCString &paramName)

RWDBStoredProcoperator[] (size_t index)

RWDBSchema params (bool forceLookup=false) const

RWDBSchema params (const RWDBConnection &connection, bool forceLookup=false) const

size_t position () const

void release () const

RWDBValue returnValue () const

RWDBColumn returnValueColumn () const

void setErrorHandler (RWDBStatus::ErrorHandler handler)

RWDBStatus status () const

RWCString text (bool forceLookup=false) const

RWCString text (const RWDBConnection &connection, bool forceLookup=false) const

## Detailed Description

Many modern RDBMS implementations include a mechanism to enforce database policy through stored procedures. Applications may be required to do much of their data manipulation through stored procedures. Unfortunately, the standards bodies have had little to say about stored procedures, so implementations vary widely among RDBMS vendors. If an RWDBStoredProc feature is not supported by the underlying database, The DB Interface Module reports an RWDBStatus::notSupported error. The remainder of this section assumes that all features are supported. Check the DB Access Module guide for information about what features are supported by a particular database.

RWDBStoredProc is an encapsulation of a database stored procedure. RWDBStoredProc supports creating and deleting stored procedures, retrieving stored procedures definitions, executing stored procedures, and processing results returned from stored procedure execution. Parameters may be passed to an RWDBStoredProc prior to execution, and the values of output parameters may be retrieved. If a database vendor's stored procedure may return multiple sets of results, RWDBStoredProc can access each result set in turn.

RWDBStoredProc uses an RWDBSchema to store information about its formal parameters. Use the insertion operator operator<<() to pass actual parameters to an RWDBStoredProc. Insert values if the stored procedure expects IN parameters; insert pointers if the stored procedure expects OUT or IN/OUT parameters and your application needs to obtain results through the parameters. Insert rwdbNull to pass a literal NULL by value.

Note
It is an error to insert a NULL pointer; if this occurs, the status of the RWDBStoredProc changes to RWDBStatus::nullReference.

RWDBStoredProc maintains a notion of the current position in its parameter list. The current position is set to zero when the RWDBStoredProc is created, and reset to zero whenever the RWDBStoredProc is executed. Each insertion of an actual parameter increments the current position by one. The indexing operator operator[]() can be used to access a particular parameter position by number or by name. Given a stored procedure myStoredProc that expects the parameters number and name in that order, these notations are equivalent:

RWCString hello("Hello World");
myStoredProc << 1 << hello;
myStoredProc[0] << 1;
myStoredProc[1] << hello;
myStoredProc["name"] << hello;
myStoredProc["number"] << 1;

RWDBStoredProc does not check actual parameters for type; it allows the database to do type conversion. If there is a type incompatibility, the DB Interface Module passes along whatever the database reports to the application. The DB Interface Module produces an RWDBStatus::invalidPosition error if too many arguments are inserted into an RWDBStoredProc. No check is made for too few arguments. The database may supply defaults; if not, the DB Interface Module passes along whatever the database reports to the application.

In order to support parameter passing, The DB Interface Module uses a connection to query the database for schema information whenever an RWDBStoredProc is produced by an RWDBDatabase.

RWDBStoredProc is designed around the Interface/Implementation paradigm. An RWDBStoredProc instance is an interface to a reference-counted implementation; copy constructors and assignment operators produce additional references to a shared implementation. An RWDBStoredProc implementation is a base class from which a family of database-specific stored procedure implementations is derived.

Synopsis
#include <rw/db/stored.h>
RWDBStoredProc myProc = myDbase.storedProc("myProcName");
Example

In this example, suppose there is a database procedure getId, which expects two parameters: name, an input string representing a customer's name, and id, an output integer parameter representing the customer's id. The procedure is supposed to look up the customer id for the given customer name. If successful, it places the id in its id parameter and returns 0. Otherwise it returns -1 and does not change id.

RWDBStoredProc getId = myDbase.storedProc("getId");
RWCString name("John Doe");
int id;
getId << name << &id;
getId.execute();
RWDBValue retValue = getId.returnValue();
if (retValue.asInt() == 0)
{
cout << "John Doe's id is " << id << endl;
}
else
{
cout << "Can't find John Doe's id" << endl;
}

## Member Enumeration Documentation

A class-scoped enum containing the cache types.

Enumerator
Local

Clears self's cache. Cached data for an RWDBStoredProc consists of the parameter list, the state of the exists flag, and the text.

All

Clears cached data in self and in the cache manager, if there is one. Cached data for an RWDBStoredProc consists of the parameter list, the state of the exists flag, and the text.

## Constructor & Destructor Documentation

 RWDBStoredProc::RWDBStoredProc ( )

The default constructor creates an RWDBStoredProc whose status is RWDBStatus::notInitialized. This constructor is provided as a convenience, for example, for declaring an array of RWDBStoredProc objects. Usable RWDBStoredProc objects are obtained from RWDBDatabase instances.

 RWDBStoredProc::RWDBStoredProc ( const RWDBStoredProc & proc )

Copy constructor. Self shares an implementation with proc.

## Member Function Documentation

 void RWDBStoredProc::acquire ( ) const

Attempts to acquire the internal mutex lock. If the mutex is already locked by another thread, the function blocks until the mutex is released. This function can be called from a const object.

Note
In single-threaded builds, this function evaluates to a no-op.
 RWDBStatus RWDBStoredProc::clear ( )

Clears all internal state.

 void RWDBStoredProc::clearCache ( CacheType cache = RWDBStoredProc::Local )

Clears cached metadata information. If cache is RWDBStoredProc::Local, clears cache in self. If cache is RWDBStoredProc::All, clears cached data in self and in the global cache derived from RWDBCacheManager, if there is one.

 RWDBDatabase RWDBStoredProc::database ( ) const

Returns the RWDBDatabase that produced self. Returns an RWDBDatabase whose status is RWDBStatus::notInitialized, if self was created with the default constructor.

 RWDBStatus RWDBStoredProc::drop ( )

Uses a default database connection to execute the database-specific equivalent of the SQL statement:

DROP PROCEDURE <name>

where <name> is the name of the database stored procedure encapsulated by self. You can check the isValid() method of the return value to see if the operation succeeded.

DB XA Module: May generate a server error. This method can still be used before XA connectivity is established.

 RWDBStatus RWDBStoredProc::drop ( const RWDBConnection & connection )

Uses the supplied connection to execute the database-specific equivalent of the SQL statement:

DROP PROCEDURE <name>

where <name> is the name of the database stored procedure encapsulated by self. You can check the isValid() method of the return value to see if the operation succeeded. This function can behave asynchronously if executed using an asynchronous connection.

DB XA Module: May generate a server error. This method can still be used before XA connectivity is established.

 RWDBStatus::ErrorHandler RWDBStoredProc::errorHandler ( ) const

Returns the error handler attached to self.

 RWDBResult RWDBStoredProc::execute ( )

Uses a default database connection to execute the stored procedure encapsulated by self. The connection is held by the RWDBResult until the RWDBResult is destroyed. The connection is also held by self until either fetchReturnParams() or returnValue() is called, or the RWDBStoredProc is destroyed.

 RWDBResult RWDBStoredProc::execute ( const RWDBConnection & connection )

Uses the supplied connection to execute the stored procedure encapsulated by self. The connection is held by the RWDBResult until the RWDBResult is destroyed. The connection is also held by self until either fetchReturnParams() or returnValue() is called, or the RWDBStoredProc is destroyed. This function can behave asynchronously if executed using an asynchronous connection.

 bool RWDBStoredProc::exists ( bool forceLookup = false ) const

Returns true if the stored procedure encapsulated by self exists in the database. If the result was cached in self, returns the cached result. Otherwise, if the result was previously cached in the cache manager installed on the RWDBDatabase that produced self, returns the result found in the cache manager. If the result was not in either the local cache or cache manager, the database is queried, using a default database connection, and the retrieved result is returned and also stored in the local cache and the cache manager, if there is one.

By setting forceLookup to true, this method necessarily queries the database.

If for some reason the result cannot be obtained from either the caches or the database, this method returns false.

Note
The forceLookup parameter is deprecated. Use clearCache() to clear the metadata from the cache before calling this method.
 bool RWDBStoredProc::exists ( const RWDBConnection & connection, bool forceLookup = false ) const

Returns true if the stored procedure encapsulated by self exists in the database. If the result was cached in self, returns the cached result. Otherwise, if the result was previously cached in the cache manager installed on the RWDBDatabase that produced self, returns the result found in the cache manager. If the result was not in either the local cache or cache manager, the database is queried, using the supplied connection, and the retrieved result is returned and also stored in the local cache and the cache manager, if there is one.

By setting forceLookup to true, this method necessarily queries the database.

If for some reason the result cannot be obtained from either the caches or the database, this method returns false.

Note
The forceLookup parameter is deprecated. Use clearCache() to clear the metadata from the cache before calling this method.
 RWDBStatus RWDBStoredProc::fetchReturnParams ( )

The connection used by the last call to execute() is used to obtain any output parameters returned by the database stored procedure. If execute() has not yet been successfully invoked, sets self's status and returns RWDBStatus::notConnected. Some databases do not support return parameters, in this case RWDBStatus::notSupported is returned. This function behaves asynchronously if the stored procedure was created using an asynchronous connection.

 bool RWDBStoredProc::isNull ( const RWDBColumn & column ) const

Returns true if the last value fetched into the output parameter with the same name as column was NULL. Otherwise returns false. If there is no such output parameter with the same name, self's status changes to RWDBStatus::invalidPosition.

 bool RWDBStoredProc::isNull ( const RWCString & name ) const

Returns true if the last value fetched into the output parameter with the given name was NULL. Otherwise returns false. If there is no such output parameter with that given name, self's status changes to RWDBStatus::invalidPosition.

 bool RWDBStoredProc::isNull ( size_t index ) const

Returns true if the last value fetched into the output parameter at position index was NULL. Otherwise returns false. If there is no such output parameter at index, self's status changes to RWDBStatus::invalidPosition.

This function returns true if the object is in ready state, indicating that accessing the object will not block. Accessing a nonready object may potentially block.

 bool RWDBStoredProc::isValid ( ) const

Returns true if self's status is RWDBStatus::ok, otherwise returns false.

 RWCString RWDBStoredProc::name ( ) const

Returns self's name.

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDBValueManip value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDBValue & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( char value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned char value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( short value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned short value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( int value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned int value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( long value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned long value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( long long value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned long long value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( float value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( double value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( long double value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDecimalPortable & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDate & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDateTime & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDBDateTime & value )
Deprecated:
As of SourcePro 12.5, use RWDBStoredProc::operator<<(const RWDateTime&) instead.

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDBDuration & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWCString & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDBMBString & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWBasicUString & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWWString & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDBBlob & value )

Passes value as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by one. The parameter is passed by value.

 RWDBStoredProc& RWDBStoredProc::operator<< ( const RWDBBoundExpr & value )

Inserts a placeholder and performs binding for in-type parameters. Here in-type binding includes in/out binding. The meaning of shifting in an RWDBBoundExpr with entries greater than 1 is vendor-dependent.

 RWDBStoredProc& RWDBStoredProc::operator<< ( short * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned short * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( int * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned int * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( long * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned long * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( long long * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( unsigned long long * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( float * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( double * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( long double * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDecimalPortable * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDate * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDateTime * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDBDateTime * valPtr )
Deprecated:
As of SourcePro 12.5, use RWDBStoredProc::operator<<(RWDateTime*) instead.

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDBDuration * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDBBlob * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWCString * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWDBMBString * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWBasicUString * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator<< ( RWWString * valPtr )

Passes valPtr as the nth parameter to self, where n is the current position in self's formal parameter list, and increments the current position by 1. The parameter is passed by reference. After executing the stored procedure, the variable addressed by valPtr is updated by calling either fetchReturnParams() or returnValue().

 RWDBStoredProc& RWDBStoredProc::operator= ( const RWDBStoredProc & proc )

Assignment operator. Self shares an implementation with proc.

 RWDBStoredProc& RWDBStoredProc::operator[] ( const RWDBColumn & paramColumn )

Self's current row position is set to the index in self's schema of the first parameter whose name matches that of paramColumn. If there is no such parameter, self's status changes to RWDBStatus::invalidPosition. Returns reference to self.

 RWDBStoredProc& RWDBStoredProc::operator[] ( const RWCString & paramName )

Self's current row position is set to the index in self's schema of the first parameter whose name is paramName. If there is no such parameter, self's status changes to RWDBStatus::invalidPosition. Returns a reference to self.

 RWDBStoredProc& RWDBStoredProc::operator[] ( size_t index )

Self's current row position is set to index. If index is greater than or equal to the number of parameters expected by self, self's status is changed to RWDBStatus::invalidPosition. Returns a reference to self.

 RWDBSchema RWDBStoredProc::params ( bool forceLookup = false ) const

Returns an RWDBSchema which represents self's formal parameter list. If the schema was cached in self, returns the cached schema. Otherwise, if the schema was previously cached in the cache manager installed on the RWDBDatabase that produced self, returns the schema found in the cache manager. If the schema was not in either the local cache or cache manager, the database is queried, using a default database connection, and the retrieved schema is returned and also stored in the local cache and the cache manager, if there is one.

By setting forceLookup to true, this method necessarily queries the database.

If for some reason the schema cannot be obtained from either the caches or the database, this method returns an empty schema and sets self's status to reflect the error.

Note
The forceLookup parameter is deprecated. Use clearCache() to clear the metadata from the cache before calling this method.
 RWDBSchema RWDBStoredProc::params ( const RWDBConnection & connection, bool forceLookup = false ) const

Returns an RWDBSchema which represents self's formal parameter list. If the schema was cached in self, returns the cached schema. Otherwise, if the schema was previously cached in the cache manager installed on the RWDBDatabase that produced self, returns the schema found in the cache manager. If the schema was not in either the local cache or cache manager, the database is queried, using the supplied connection, and the retrieved schema is returned and also stored in the local cache and the cache manager, if there is one.

By setting forceLookup to true, this method necessarily queries the database.

If for some reason the schema cannot be obtained from either the caches or the database, this method returns an empty schema and sets self's status to reflect the error.

Note
The forceLookup parameter is deprecated. Use clearCache() to clear the metadata from the cache before calling this method.
 size_t RWDBStoredProc::position ( ) const

Returns the current position, at which the next value will be shifted in using the insertion operator. Returns RW_NPOS if isValid() returns false.

 void RWDBStoredProc::release ( ) const

Releases a previously acquired mutex. This function can be called from a const object.

Note
In single-threaded builds, this function evaluates to a no-op.
 RWDBValue RWDBStoredProc::returnValue ( ) const

Calls fetchReturnParams(), then, if no error has occurred, obtains the return value of the most recent execution of self in the database and returns it. If there is no return value, or if an error has occurred, returns a NULL RWDBValue. In the latter case sets self's status to reflect the error.

 RWDBColumn RWDBStoredProc::returnValueColumn ( ) const

Returns a deep copy of the RWDBColumn representing the datatype of self's return value. If there is no return value, returns an RWDBColumn whose status is RWDBStatus::columnNotFound.

 void RWDBStoredProc::setErrorHandler ( RWDBStatus::ErrorHandler handler )

Installs handler as self's error handler. The supplied handler is inherited by all objects produced by self. By default, an RWDBStatus::ErrorHandler is inherited from the object which produced self; this method overrides the default.

 RWDBStatus RWDBStoredProc::status ( ) const

Returns the current status of self.

 RWCString RWDBStoredProc::text ( bool forceLookup = false ) const

Returns the SQL text used to define the stored procedure encapsulated by self. If the text was cached in self, returns the cached text. Otherwise, if the text was previously cached in the cache manager installed on the RWDBDatabase that produced self, returns the text found in the cache manager. If the text was not in either the local cache or cache manager, the database is queried, using a default database connection, and the retrieved text is returned and also stored in the local cache and the cache manager, if there is one.

By setting forceLookup to true, this method necessarily queries the database.

If for some reason the text cannot be obtained from either the caches or the database, this method returns an empty string and sets self's status to reflect the error.

Note
The forceLookup parameter is deprecated. Use clearCache() to clear the metadata from the cache before calling this method.
 RWCString RWDBStoredProc::text ( const RWDBConnection & connection, bool forceLookup = false ) const

Returns the SQL text used to define the stored procedure encapsulated by self. If the text was cached in self, returns the cached text. Otherwise, if the text was previously cached in the cache manager installed on the RWDBDatabase that produced self, returns the text found in the cache manager. If the text was not in either the local cache or cache manager, the database is queried, using the supplied connection, and the retrieved text is returned and also stored in the local cache and the cache manager, if there is one.

By setting forceLookup to true, this method necessarily queries the database.

If for some reason the text cannot be obtained from either the caches or the database, this method returns an empty string and sets self's status to reflect the error.

Note
The forceLookup parameter is deprecated. Use clearCache() to clear the metadata from the cache before calling this method.