Potentially, the otl_refcur_stream class may raise an OTL defined exception.
All of the functions, defined in this class, mimick the otl_stream functions, therefore, see the descriptions of the corresponding functions in otl_stream.
class otl_refcur_stream {
public:
void set_column_type(const int column_ndx,
const int col_type,
const int col_size=0);
void set_all_column_types(const unsigned mask=0);
void rewind(void);
int is_null(void);
int eof(void);
void close(void);
otl_column_desc* describe_select(int& desc_len);
otl_var_desc* describe_out_vars(int& desc_len);
otl_var_desc* describe_next_out_var(void);
otl_refcur_stream& operator>>(char& c);
otl_refcur_stream& operator>>(unsigned char& c);
otl_refcur_stream& operator>>(char* s);
otl_refcur_stream& operator>>(unsigned char* s);
otl_refcur_stream& operator>>(int& n);
otl_refcur_stream& operator>>(unsigned& u);
otl_refcur_stream& operator>>(short& sh);
otl_refcur_stream& operator>>(long int& l);
otl_refcur_stream& operator>>(float& f);
otl_refcur_stream& operator>>(double& d);
otl_refcur_stream& operator>>(OTL_BIGINT& n);
// Reads a string (char) value from the stream and converts it to
// a signed 64-bit integer. This operator is useful for reading
// large whole numbers that are larger than the "double"
// container can hold. The underlying SELECT statement that gets returned
// to C++ via a reference cursor should explicitly convert numeric values
// to strings, for example: LTRIM(TO_CHAR(my_large_num))
otl_refcur_stream& operator>>(otl_long_string& s); // read the LOB from the stream
otl_refcur_stream& operator>>(otl_datetime& dt); // read date/time info from the stream
otl_refcur_stream& operator>>(otl_lob_stream& lob);
// read reference to CLOB/BLOB from otl_ref_stream
// into otl_lob_stream (OCI8). In other words,
// initialize otl_lob_stream for reading CLOB/BLOB
// in stream mode
otl_refcur_stream& operator>>(std::string& s);
// Read the ANSI C++ std::string. This operator can
// read VARCHAR/CHAR table fields as well as large string
// objects (TEXT, LONG, CLOB, etc.)
If #define OTL_UNICODE is enabled, the following operators have
special meaning:
otl_stream& operator>>(unsigned char* s);
// returns a null terminated array of unsigned short's
// (double-byte Unicode characters). Therefore, "unsigned char*"
// needs to be type cast to "unsigned short*". Also, it's recommended
// to allocate 2 bytes per each Unicode character. plus 2 bytes per
// possible surrogate character.
otl_stream& operator>>(otl_long_unicode_string& s);
// read the Unicode LOB from the stream
}; // end of otl_refcur_stream
Copyright © 1996, 2007, Sergei Kuchin, email: skuchin@ispwest.com, skuchin@gmail.com .
Permission to use, copy, modify and redistribute this document for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies.