blob: 5485ff03bfd9dbf78d95d1a10cdb9cc938f74683 [file] [log] [blame]
Tang Cheng03c0b0a2015-01-12 11:19:45 +08001/* Copyright (c) 2000, 2008, Oracle. All rights reserved. */
2
3/*
4 NAME
5 occiCommon.h - header file for doing forward references
6
7 DESCRIPTION
8 Just declare all the classes
9
10 RELATED DOCUMENTS
11 OCCI Programmer's Guide
12
13 EXPORT FUNCTION(S)
14 none
15
16 INTERNAL FUNCTION(S)
17 none
18
19 EXAMPLES
20
21 NOTES
22 none
23
24*/
25
26
27#ifndef OCCICOMMON_ORACLE
28# define OCCICOMMON_ORACLE
29
30#ifndef _olint
31
32#ifndef OCI_ORACLE
33#include <oci.h>
34#endif
35
36#ifndef ORASTRINGSTL
37#define ORASTRINGSTL
38#include <string>
39#endif
40
41#ifndef ORAVECTORSTL
42#include <vector>
43#define ORAVECTORSTL
44#endif
45
46#ifndef ORALISTSTL
47#include <list>
48#define ORALISTSTL
49#endif
50
51#define OCCI_STD_NAMESPACE std
52#define OCCI_HAVE_STD_NAMESPACE 1
53
54// version definitions
55#define OCCI_MAJOR_VERSION OCI_MAJOR_VERSION
56#define OCCI_MINOR_VERSION OCI_MINOR_VERSION
57
58namespace oracle {
59namespace occi {
60
61//UString is the class for UTF16 characterset
62//check for version = 3.2 or 3.3
63#if (__GNUC__ == 3 && (__GNUC_MINOR__ == 2 || __GNUC_MINOR__ == 3))
64 //char_traits<T> specialization for utext for gcc 3.2.3
65 struct utext_char_traits
66 {
67 typedef utext char_type;
68 typedef unsigned int int_type;
69
70 typedef OCCI_STD_NAMESPACE::streampos pos_type;
71 typedef OCCI_STD_NAMESPACE::streamoff off_type;
72 typedef OCCI_STD_NAMESPACE::mbstate_t state_type;
73
74 //assign one char to another
75 static void assign(char_type& c1, const char_type& c2)
76 {
77 c1 = c2;
78 }
79
80 //are 2 chars equal ?
81 static bool eq(const char_type& c1, const char_type& c2)
82 {
83 return c1 == c2;
84 }
85
86 //is char c1 less then c2 ?
87 static bool lt(const char_type& c1, const char_type& c2)
88 {
89 return c1 < c2;
90 }
91
92 //compare 2 strings of char
93 static int compare(const char_type* s1, const char_type* s2, size_t n)
94 {
95 for (size_t i = 0; i < n; ++i)
96 if (!eq(s1[i], s2[i]))
97 return s1[i] < s2[i] ? -1 : 1;
98 return 0;
99 }
100
101 //length of a char string
102 static size_t length(const char_type* s)
103 {
104 const char_type nullchar = char_type(0);
105 size_t i = 0;
106
107 while (!eq(*s++, nullchar)) i++;
108 return i;
109 }
110
111 //find a character in the char string
112 static const char_type* find(const char_type* s,
113 size_t n, const char_type& c)
114 {
115 for ( ; n > 0 ; ++s, --n)
116 if (eq(*s, c))
117 return s;
118 return 0;
119 }
120
121 //move n chars from s2 to s1
122 static char_type* move(char_type* s1, const char_type* s2, size_t n)
123 {
124 memmove(s1, s2, n * sizeof(char_type));
125 return s1;
126 }
127
128 //copy n chars from s2 to s1
129 static char_type* copy(char_type* s1, const char_type* s2, size_t n)
130 {
131 memcpy(s1, s2, n * sizeof(char_type));
132 return s1;
133 }
134
135 //fill char c into s
136 static char_type* assign(char_type* s, size_t n, char_type c)
137 {
138 for (size_t i = 0; i < n; ++i)
139 assign(s[i], c);
140 return s;
141 }
142
143 //is the int representation eof ?
144 static int_type not_eof(const int_type& c)
145 {
146 if (c == eof())
147 return 0;
148 else
149 return c;
150 }
151
152 //cast a int type to char
153 static char_type to_char_type(const int_type& c)
154 {
155 return static_cast<char_type>(c);
156 }
157
158 //cast char to int type
159 static int_type to_int_type(const char_type& c)
160 {
161 return static_cast<int_type>(c);
162 }
163
164 //eq operator when the chars are represented as ints
165 static bool eq_int_type(const int_type& c1, const int_type& c2)
166 {
167 return c1 == c2;
168 }
169
170 //eof character
171 static int_type eof()
172 {
173 return static_cast<int_type>(-1);
174 }
175
176
177 }; //end char_traits<unsigned short>
178
179typedef OCCI_STD_NAMESPACE::basic_string<utext, utext_char_traits> UString;
180#else
181//for non gcc 3.2.3 platforms
182typedef OCCI_STD_NAMESPACE::basic_string<utext> UString;
183#endif /* if gcc 3.2.3 */
184
185class Environment;
186class EnvironmentImpl;
187class Connection;
188class ConnectionImpl;
189class ConnectionPool;
190class ConnectionPoolImpl;
191class StatelessConnectionPool;
192class StatelessConnectionPoolImpl;
193class Statement;
194class StatementImpl;
195class ResultSet;
196class ResultSetImpl;
197class SQLException;
198class SQLExceptionImpl;
199class BatchSQLException;
200class BatchSQLExceptionImpl;
201class Stream;
202class PObject;
203class Number;
204class Bytes;
205class BytesImpl;
206class Date;
207class Timestamp;
208
209class MetaData;
210class MetaDataImpl;
211template <class T> class Ref;
212class RefImpl;
213class RefAny;
214class Blob;
215class Bfile;
216class Clob;
217class LobStreamImpl;
218class AnyData;
219class AnyDataImpl;
220class Map;
221class IntervalDS;
222class IntervalYM;
223
224namespace aq {
225class Message;
226class MessageImpl;
227class Agent;
228class AgentImpl;
229class Producer;
230class ProducerImpl;
231class Consumer;
232class ConsumerImpl;
233class Listener;
234class Subscription;
235class SubscriptionImpl;
236class NotifyResult;
237}
238
239typedef struct BFloat BFloat;
240typedef struct BDouble BDouble;
241
242/*---------------------------------------------------------------------------
243 ENUMERATORS
244 ---------------------------------------------------------------------------*/
245enum Type
246{
247 OCCI_SQLT_CHR=SQLT_CHR,
248 OCCI_SQLT_NUM=SQLT_NUM,
249 OCCIINT = SQLT_INT,
250 OCCIFLOAT = SQLT_FLT,
251 OCCIBFLOAT = SQLT_BFLOAT,
252 OCCIBDOUBLE = SQLT_BDOUBLE,
253 OCCIIBFLOAT = SQLT_IBFLOAT,
254 OCCIIBDOUBLE = SQLT_IBDOUBLE,
255 OCCI_SQLT_STR=SQLT_STR,
256 OCCI_SQLT_VNU=SQLT_VNU,
257 OCCI_SQLT_PDN=SQLT_PDN,
258 OCCI_SQLT_LNG=SQLT_LNG,
259 OCCI_SQLT_VCS=SQLT_VCS,
260 OCCI_SQLT_NON=SQLT_NON,
261 OCCI_SQLT_RID=SQLT_RID,
262 OCCI_SQLT_DAT=SQLT_DAT,
263 OCCI_SQLT_VBI=SQLT_VBI,
264 OCCI_SQLT_BIN=SQLT_BIN,
265 OCCI_SQLT_LBI=SQLT_LBI,
266 OCCIUNSIGNED_INT = SQLT_UIN,
267 OCCI_SQLT_SLS=SQLT_SLS,
268 OCCI_SQLT_LVC=SQLT_LVC,
269 OCCI_SQLT_LVB=SQLT_LVB,
270 OCCI_SQLT_AFC=SQLT_AFC,
271 OCCI_SQLT_AVC=SQLT_AVC,
272 OCCI_SQLT_CUR=SQLT_CUR,
273 OCCI_SQLT_RDD=SQLT_RDD,
274 OCCI_SQLT_LAB=SQLT_LAB,
275 OCCI_SQLT_OSL=SQLT_OSL,
276 OCCI_SQLT_NTY=SQLT_NTY,
277 OCCI_SQLT_REF=SQLT_REF,
278 OCCI_SQLT_CLOB=SQLT_CLOB,
279 OCCI_SQLT_BLOB=SQLT_BLOB,
280 OCCI_SQLT_BFILEE=SQLT_BFILEE,
281 OCCI_SQLT_CFILEE=SQLT_CFILEE,
282 OCCI_SQLT_RSET=SQLT_RSET,
283 OCCI_SQLT_NCO=SQLT_NCO,
284 OCCI_SQLT_VST=SQLT_VST,
285 OCCI_SQLT_ODT=SQLT_ODT,
286 OCCI_SQLT_DATE=SQLT_DATE,
287 OCCI_SQLT_TIME=SQLT_TIME,
288 OCCI_SQLT_TIME_TZ=SQLT_TIME_TZ,
289 OCCI_SQLT_TIMESTAMP=SQLT_TIMESTAMP,
290 OCCI_SQLT_TIMESTAMP_TZ=SQLT_TIMESTAMP_TZ,
291 OCCI_SQLT_INTERVAL_YM=SQLT_INTERVAL_YM,
292 OCCI_SQLT_INTERVAL_DS=SQLT_INTERVAL_DS,
293 OCCI_SQLT_TIMESTAMP_LTZ=SQLT_TIMESTAMP_LTZ,
294 OCCI_SQLT_FILE=SQLT_FILE,
295 OCCI_SQLT_CFILE=SQLT_CFILE,
296 OCCI_SQLT_BFILE=SQLT_BFILE,
297
298 OCCICHAR = 32 *1024,
299 OCCIDOUBLE,
300 OCCIBOOL,
301 OCCIANYDATA ,
302 OCCINUMBER,
303 OCCIBLOB,
304 OCCIBFILE,
305 OCCIBYTES,
306 OCCICLOB ,
307 OCCIVECTOR,
308 OCCIMETADATA,
309 OCCIPOBJECT,
310 OCCIREF ,
311 OCCIREFANY,
312 OCCISTRING ,
313 OCCISTREAM ,
314 OCCIDATE ,
315 OCCIINTERVALDS ,
316 OCCIINTERVALYM ,
317 OCCITIMESTAMP,
318 OCCIROWID,
319 OCCICURSOR
320
321
322};
323
324enum LockOptions {OCCI_LOCK_NONE = OCI_LOCK_NONE,
325 OCCI_LOCK_X = OCI_LOCK_X,
326 OCCI_LOCK_X_NOWAIT = OCI_LOCK_X_NOWAIT
327 };
328
329enum {OCCI_MAX_PREFETCH_DEPTH = UB4MAXVAL};
330
331enum TypeCode
332{
333
334OCCI_TYPECODE_REF = OCI_TYPECODE_REF,
335OCCI_TYPECODE_DATE = OCI_TYPECODE_DATE,
336OCCI_TYPECODE_REAL = OCI_TYPECODE_REAL,
337OCCI_TYPECODE_DOUBLE = OCI_TYPECODE_DOUBLE,
338OCCI_TYPECODE_BDOUBLE = OCI_TYPECODE_BDOUBLE,
339OCCI_TYPECODE_FLOAT = OCI_TYPECODE_FLOAT,
340OCCI_TYPECODE_BFLOAT = OCI_TYPECODE_BFLOAT,
341OCCI_TYPECODE_NUMBER = OCI_TYPECODE_NUMBER,
342OCCI_TYPECODE_DECIMAL = OCI_TYPECODE_DECIMAL,
343OCCI_TYPECODE_OCTET = OCI_TYPECODE_OCTET,
344OCCI_TYPECODE_INTEGER = OCI_TYPECODE_INTEGER,
345OCCI_TYPECODE_SMALLINT= OCI_TYPECODE_SMALLINT,
346OCCI_TYPECODE_RAW = OCI_TYPECODE_RAW,
347OCCI_TYPECODE_VARCHAR2 = OCI_TYPECODE_VARCHAR2,
348OCCI_TYPECODE_VARCHAR = OCI_TYPECODE_VARCHAR,
349OCCI_TYPECODE_CHAR = OCI_TYPECODE_CHAR,
350OCCI_TYPECODE_VARRAY= OCI_TYPECODE_VARRAY,
351OCCI_TYPECODE_TABLE = OCI_TYPECODE_TABLE,
352OCCI_TYPECODE_CLOB = OCI_TYPECODE_CLOB,
353OCCI_TYPECODE_BLOB = OCI_TYPECODE_BLOB,
354OCCI_TYPECODE_BFILE = OCI_TYPECODE_BFILE,
355OCCI_TYPECODE_OBJECT = OCI_TYPECODE_OBJECT,
356OCCI_TYPECODE_NAMEDCOLLECTION = OCI_TYPECODE_NAMEDCOLLECTION
357};
358
359enum CharSetForm
360{
361 OCCI_SQLCS_IMPLICIT = SQLCS_IMPLICIT // use local db char set
362 ,OCCI_SQLCS_NCHAR = SQLCS_NCHAR // use local db nchar set
363 ,OCCI_SQLCS_EXPLICIT = SQLCS_EXPLICIT // char set explicitly specified
364 ,OCCI_SQLCS_FLEXIBLE = SQLCS_FLEXIBLE // pl/sql flexible parameter
365};
366
367enum LobOpenMode
368{ OCCI_LOB_READONLY = OCI_LOB_READONLY
369 ,OCCI_LOB_READWRITE = OCI_LOB_READWRITE
370 ,OCCI_LOB_WRITEONLY = OCI_LOB_WRITEONLY
371 ,OCCI_LOB_APPENDONLY = OCI_LOB_APPENDONLY
372 ,OCCI_LOB_FULLOVERWRITE = OCI_LOB_FULLOVERWRITE
373 ,OCCI_LOB_FULLREAD = OCI_LOB_FULLREAD
374};
375
376enum LobOptionType
377{
378 OCCI_LOB_OPT_NONE = 0,
379 OCCI_LOB_OPT_COMPRESS = OCI_LOB_OPT_COMPRESS,
380 OCCI_LOB_OPT_ENCRYPT = OCI_LOB_OPT_ENCRYPT,
381 OCCI_LOB_OPT_DEDUPLICATE = OCI_LOB_OPT_DEDUPLICATE,
382 OCCI_LOB_OPT_ALLOCSIZE = OCI_LOB_OPT_ALLOCSIZE,
383 OCCI_LOB_OPT_CONTENTTYPE = OCI_LOB_OPT_CONTENTTYPE,
384 OCCI_LOB_OPT_MODTIME = OCI_LOB_OPT_MODTIME
385};
386
387enum LobOptionValue
388{
389 // Compression Options
390 OCCI_LOB_COMPRESS_OFF = OCI_LOB_COMPRESS_OFF,
391 OCCI_LOB_COMPRESS_ON = OCI_LOB_COMPRESS_ON,
392 // Encryption Options
393 OCCI_LOB_ENCRYPT_OFF = OCI_LOB_ENCRYPT_OFF,
394 OCCI_LOB_ENCRYPT_ON = OCI_LOB_ENCRYPT_ON,
395 // Sharing Options
396 OCCI_LOB_DEDUPLICATE_OFF = OCI_LOB_DEDUPLICATE_OFF,
397 OCCI_LOB_DEDUPLICATE_ON = OCI_LOB_DEDUPLICATE_ON
398};
399
400class RefCounted {
401public:
402 RefCounted();
403 virtual ~RefCounted(){}
404 const RefCounted * newRef() const;
405 void deleteRef() const;
406
407private:
408
409 void onZeroReferences();
410 unsigned long references_;
411 };
412
413template <class T>
414class ConstPtr
415{
416
417public:
418
419ConstPtr( const T* ptr = 0 );
420ConstPtr( const ConstPtr<T>& mp );
421~ConstPtr();
422const T * operator->() const;
423const T* rawPtr() const;
424
425#ifdef MEMBER_TEMPLATE
426template<class OtherType> operator ConstPtr<OtherType>();
427#endif
428
429protected:
430
431void operator=( const ConstPtr<T>& mp );
432const T* rawPtr_;
433
434};
435
436template <class T>
437class Ptr : public ConstPtr<T> {
438
439public:
440
441Ptr( T* ptr = 0 );
442Ptr( const Ptr<T>& mp );
443void operator=( const Ptr<T>& mp );
444const T * operator->() const;
445T * operator->();
446T* rawPtr() ;
447const T* rawPtr() const;
448
449
450
451#ifdef MEMBER_TEMPLATE
452 template<class OtherType>
453 operator Ptr<OtherType>();
454#endif
455
456};
457
458/*---------------------------------------------------------------------------
459 EXPORT FUNCTIONS
460 ---------------------------------------------------------------------------*/
461
462 void getVector(const AnyData &any,
463 OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string> &vect);
464 void getVector(const AnyData &any,
465 OCCI_STD_NAMESPACE::vector<UString> &vect);
466 void getVector( const AnyData &any,
467 OCCI_STD_NAMESPACE::vector<Blob> &vect) ;
468 void getVector( const AnyData &any,
469 OCCI_STD_NAMESPACE::vector<Clob> &vect) ;
470 void getVector( const AnyData &any,
471 OCCI_STD_NAMESPACE::vector<Bfile> &vect) ;
472 void getVector( const AnyData &any,
473 OCCI_STD_NAMESPACE::vector<Number> &vect) ;
474 void getVector( const AnyData &any,
475 OCCI_STD_NAMESPACE::vector<BFloat> &vect);
476 void getVector(const AnyData &any,
477 OCCI_STD_NAMESPACE::vector<BDouble> &vect);
478 void getVector( const AnyData &any,
479 OCCI_STD_NAMESPACE::vector<Bytes> &vect) ;
480 void getVector( const AnyData &any,
481 OCCI_STD_NAMESPACE::vector<Date> &vect) ;
482 void getVector( const AnyData &any,
483 OCCI_STD_NAMESPACE::vector<Timestamp> &vect) ;
484 void getVector( const AnyData &any,
485 OCCI_STD_NAMESPACE::vector<IntervalYM> &vect) ;
486 void getVector( const AnyData &any,
487 OCCI_STD_NAMESPACE::vector<IntervalDS> &vect) ;
488 template <class T>
489 void getVectorOfRefs( const AnyData &any,
490 OCCI_STD_NAMESPACE::vector< Ref<T> > &vect) ;
491
492 #if !defined(WIN32COMMON) && !defined(__MVS__)
493 template <class T>
494 void getVector(const AnyData &any,
495 OCCI_STD_NAMESPACE::vector< Ref<T> > &vect) ;
496 #endif
497 #if defined(WIN32COMMON) || defined(__MVS__)
498 template <class T>
499 void getVector(const AnyData &any,
500 OCCI_STD_NAMESPACE::vector<T> &vect,
501 void *(*rSQL)(void *));
502 #else
503 template <class T>
504 void getVector(const AnyData &any,
505 OCCI_STD_NAMESPACE::vector<T *> &vect,
506 void *(*rSQL)(void *));
507 #endif
508
509 void setVector( AnyData &any,
510 const OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string> &vect) ;
511 void setVector( AnyData &any,
512 const OCCI_STD_NAMESPACE::vector<UString> &vect) ;
513 void setVector( AnyData &any,
514 const OCCI_STD_NAMESPACE::vector<Blob> &vect) ;
515 void setVector( AnyData &any,
516 const OCCI_STD_NAMESPACE::vector<Clob> &vect) ;
517 void setVector( AnyData &any,
518 const OCCI_STD_NAMESPACE::vector<Bfile> &vect) ;
519 void setVector( AnyData &any,
520 const OCCI_STD_NAMESPACE::vector<BFloat> &vect) ;
521 void setVector( AnyData &any,
522 const OCCI_STD_NAMESPACE::vector<BDouble> &vect) ;
523 void setVector( AnyData &any,
524 const OCCI_STD_NAMESPACE::vector<Number> &vect) ;
525 void setVector( AnyData &any,
526 const OCCI_STD_NAMESPACE::vector<Bytes> &vect) ;
527 void setVector( AnyData &any,
528 const OCCI_STD_NAMESPACE::vector<Date> &vect) ;
529 void setVector( AnyData &any,
530 const OCCI_STD_NAMESPACE::vector<Timestamp> &vect) ;
531 void setVector( AnyData &any,
532 const OCCI_STD_NAMESPACE::vector<IntervalYM> &vect) ;
533 void setVector( AnyData &any,
534 const OCCI_STD_NAMESPACE::vector<IntervalDS> &vect) ;
535 template <class T>
536 void setVectorOfRefs( AnyData &any,
537 const OCCI_STD_NAMESPACE::vector< Ref<T> > &vect) ;
538 #if !defined(WIN32COMMON) && !defined(__MVS__)
539 template <class T>
540 void setVector( AnyData &any,
541 const OCCI_STD_NAMESPACE::vector< Ref<T> > &vect) ;
542 #endif
543 #if defined(WIN32COMMON) || defined(__MVS__)
544 template <class T>
545 void setVector( AnyData &any,
546 const OCCI_STD_NAMESPACE::vector< T > &vect) ;
547 #else
548 template <class T>
549 void setVector( AnyData &any,
550 const OCCI_STD_NAMESPACE::vector< T* > &vect) ;
551 #endif
552
553 void getVector( ResultSet *rs, unsigned int index,
554 OCCI_STD_NAMESPACE::vector<int> &vect) ;
555 void getVector( ResultSet *rs, unsigned int index,
556 OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string> &vect) ;
557 void getVector( ResultSet *rs, unsigned int index,
558 OCCI_STD_NAMESPACE::vector<UString> &vect) ;//UTF16 support
559 void getVector(ResultSet *rs, unsigned int,
560 OCCI_STD_NAMESPACE::vector<unsigned int> &vect) ;
561 void getVector(ResultSet *rs, unsigned int,
562 OCCI_STD_NAMESPACE::vector<float> &vect);
563 void getVector(ResultSet *rs, unsigned int,
564 OCCI_STD_NAMESPACE::vector<BFloat> &vect);
565 void getVector(ResultSet *rs, unsigned int,
566 OCCI_STD_NAMESPACE::vector<double> &vect);
567 void getVector(ResultSet *rs, unsigned int,
568 OCCI_STD_NAMESPACE::vector<BDouble> &vect);
569 void getVector(ResultSet *rs, unsigned int,
570 OCCI_STD_NAMESPACE::vector<Date> &vect) ;
571 void getVector(ResultSet *rs, unsigned int,
572 OCCI_STD_NAMESPACE::vector<Timestamp> &vect) ;
573 void getVector(ResultSet *rs, unsigned int,
574 OCCI_STD_NAMESPACE::vector<RefAny> &vect) ;
575 void getVector(ResultSet *rs, unsigned int,
576 OCCI_STD_NAMESPACE::vector<Blob> &vect) ;
577 void getVector(ResultSet *rs, unsigned int,
578 OCCI_STD_NAMESPACE::vector<Clob> &vect) ;
579 void getVector(ResultSet *rs, unsigned int,
580 OCCI_STD_NAMESPACE::vector<Bfile> &vect) ;
581 void getVector(ResultSet *rs, unsigned int,
582 OCCI_STD_NAMESPACE::vector<Number> &vect) ;
583 void getVector(ResultSet *rs, unsigned int,
584 OCCI_STD_NAMESPACE::vector<IntervalYM> &vect) ;
585 void getVector(ResultSet *rs, unsigned int,
586 OCCI_STD_NAMESPACE::vector<IntervalDS> &vect) ;
587 template <class T>
588 void getVectorOfRefs(ResultSet *rs, unsigned int,
589 OCCI_STD_NAMESPACE::vector<Ref<T> > &vect) ;
590 #if !defined(WIN32COMMON) && !defined(__MVS__)
591 template <class T>
592 void getVector(ResultSet *rs, unsigned int,
593 OCCI_STD_NAMESPACE::vector<Ref<T> > &vect) ;
594 #endif
595 #if defined(WIN32COMMON) || defined(__MVS__)
596 template <class T>
597 void getVector( ResultSet *rs, unsigned int index,
598 OCCI_STD_NAMESPACE::vector< T > &vect) ;
599 #else
600 template <class T>
601 void getVector( ResultSet *rs, unsigned int index,
602 OCCI_STD_NAMESPACE::vector< T* > &vect) ;
603 #endif
604
605
606 void getVector(Statement *rs, unsigned int,
607 OCCI_STD_NAMESPACE::vector<RefAny> &vect) ;
608 void getVector(Statement *rs, unsigned int,
609 OCCI_STD_NAMESPACE::vector<Blob> &vect) ;
610 void getVector(Statement *rs, unsigned int,
611 OCCI_STD_NAMESPACE::vector<Clob> &vect) ;
612 void getVector(Statement *rs, unsigned int,
613 OCCI_STD_NAMESPACE::vector<Bfile> &vect) ;
614 void getVector(Statement *rs, unsigned int,
615 OCCI_STD_NAMESPACE::vector<Number> &vect) ;
616 void getVector(Statement *rs, unsigned int,
617 OCCI_STD_NAMESPACE::vector<IntervalYM> &vect) ;
618 void getVector(Statement *rs, unsigned int,
619 OCCI_STD_NAMESPACE::vector<IntervalDS> &vect) ;
620 void getVector( Statement *rs, unsigned int index,
621 OCCI_STD_NAMESPACE::vector<int> &vect) ;
622 void getVector( Statement *rs, unsigned int index,
623 OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string> &vect) ;
624 void getVector( Statement *rs, unsigned int index,
625 OCCI_STD_NAMESPACE::vector<UString> &vect) ;//UTF16 support
626 void getVector(Statement *rs, unsigned int,
627 OCCI_STD_NAMESPACE::vector<unsigned int> &vect) ;
628 void getVector(Statement *rs, unsigned int,
629 OCCI_STD_NAMESPACE::vector<float> &vect) ;
630 void getVector(Statement *rs, unsigned int,
631 OCCI_STD_NAMESPACE::vector<BFloat> &vect) ;
632 void getVector(Statement *rs, unsigned int,
633 OCCI_STD_NAMESPACE::vector<double> &vect) ;
634 void getVector(Statement *rs, unsigned int,
635 OCCI_STD_NAMESPACE::vector<BDouble> &vect) ;
636 void getVector(Statement *rs, unsigned int,
637 OCCI_STD_NAMESPACE::vector<Date> &vect) ;
638 void getVector(Statement *rs, unsigned int,
639 OCCI_STD_NAMESPACE::vector<Timestamp> &vect) ;
640 template <class T>
641 void getVectorOfRefs(Statement *rs, unsigned int,
642 OCCI_STD_NAMESPACE::vector<Ref<T> > &vect) ;
643 #if !defined(WIN32COMMON) && !defined(__MVS__)
644 template <class T>
645 void getVector(Statement *rs, unsigned int,
646 OCCI_STD_NAMESPACE::vector<Ref<T> > &vect) ;
647 #endif
648 #if defined(WIN32COMMON) || defined(__MVS__)
649 template <class T>
650 void getVector( Statement *rs, unsigned int index,
651 OCCI_STD_NAMESPACE::vector< T > &vect) ;
652 #else
653 template <class T>
654 void getVector( Statement *rs, unsigned int index,
655 OCCI_STD_NAMESPACE::vector< T* > &vect) ;
656 #endif
657
658
659 void setVector(Statement *stmt, unsigned int paramIndex,
660 const OCCI_STD_NAMESPACE::vector<int> &vect,
661 const OCCI_STD_NAMESPACE::string &sqltype) ;
662 void setVector(Statement *stmt, unsigned int paramIndex,
663 const OCCI_STD_NAMESPACE::vector<unsigned int> &vect,
664 const OCCI_STD_NAMESPACE::string &sqltype) ;
665 void setVector(Statement *stmt, unsigned int paramIndex,
666 const OCCI_STD_NAMESPACE::vector<double> &vect,
667 const OCCI_STD_NAMESPACE::string &sqltype) ;
668 void setVector(Statement *stmt, unsigned int paramIndex,
669 const OCCI_STD_NAMESPACE::vector<BDouble> &vect,
670 const OCCI_STD_NAMESPACE::string &sqltype) ;
671 void setVector(Statement *stmt, unsigned int paramIndex,
672 const OCCI_STD_NAMESPACE::vector<float> &vect,
673 const OCCI_STD_NAMESPACE::string &sqltype) ;
674 void setVector(Statement *stmt, unsigned int paramIndex,
675 const OCCI_STD_NAMESPACE::vector<BFloat> &vect,
676 const OCCI_STD_NAMESPACE::string &sqltype) ;
677 void setVector(Statement *stmt, unsigned int paramIndex,
678 const OCCI_STD_NAMESPACE::vector<Number> &vect,
679 const OCCI_STD_NAMESPACE::string &sqltype);
680 void setVector(Statement *stmt, unsigned int paramIndex,
681 const OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string> &vect,
682 const OCCI_STD_NAMESPACE::string &sqltype) ;
683 void setVector(Statement *stmt, unsigned int paramIndex,
684 const OCCI_STD_NAMESPACE::vector<RefAny> &vect,
685 const OCCI_STD_NAMESPACE::string &sqltype) ;
686 void setVector(Statement *stmt, unsigned int paramIndex,
687 const OCCI_STD_NAMESPACE::vector<Blob> &vect,
688 const OCCI_STD_NAMESPACE::string &sqltype) ;
689 void setVector(Statement *stmt, unsigned int paramIndex,
690 const OCCI_STD_NAMESPACE::vector<Clob> &vect,
691 const OCCI_STD_NAMESPACE::string &sqltype) ;
692 void setVector(Statement *stmt, unsigned int paramIndex,
693 const OCCI_STD_NAMESPACE::vector<Bfile> &vect,
694 const OCCI_STD_NAMESPACE::string &sqltype) ;
695 void setVector(Statement *stmt, unsigned int paramIndex,
696 const OCCI_STD_NAMESPACE::vector<Timestamp> &vect,
697 const OCCI_STD_NAMESPACE::string &sqltype) ;
698 void setVector(Statement *stmt, unsigned int paramIndex,
699 const OCCI_STD_NAMESPACE::vector<IntervalDS> &vect,
700 const OCCI_STD_NAMESPACE::string &sqltype) ;
701 void setVector(Statement *stmt, unsigned int paramIndex,
702 const OCCI_STD_NAMESPACE::vector<IntervalYM> &vect,
703 const OCCI_STD_NAMESPACE::string &sqltype) ;
704 void setVector(Statement *stmt, unsigned int paramIndex,
705 const OCCI_STD_NAMESPACE::vector<Date> &vect,
706 const OCCI_STD_NAMESPACE::string &sqltype) ;
707 template <class T>
708 void setVectorOfRefs(Statement *stmt, unsigned int paramIndex,
709 const OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
710 const OCCI_STD_NAMESPACE::string &sqltype) ;
711 #if !defined(WIN32COMMON) && !defined(__MVS__)
712 template <class T>
713 void setVector(Statement *stmt, unsigned int paramIndex,
714 const OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
715 const OCCI_STD_NAMESPACE::string &sqltype) ;
716 #endif
717 #if defined(WIN32COMMON) || defined(__MVS__)
718 template <class T>
719 void setVector( Statement *stmt, unsigned int paramIndex,
720 const OCCI_STD_NAMESPACE::vector< T > &vect,
721 const OCCI_STD_NAMESPACE::string &sqltype) ;
722 #else
723 template <class T>
724 void setVector( Statement *stmt, unsigned int paramIndex,
725 const OCCI_STD_NAMESPACE::vector<T* > &vect,
726 const OCCI_STD_NAMESPACE::string &sqltype) ;
727 #endif
728
729/* ------------------------------------------------------------------------
730 Statement setVector functions, schema & type separate
731 arguments - multibyte support
732 ------------------------------------------------------------------------
733*/
734 void setVector(Statement *stmt, unsigned int paramIndex,
735 const OCCI_STD_NAMESPACE::vector<int> &vect,
736 const OCCI_STD_NAMESPACE::string &schemaName,
737 const OCCI_STD_NAMESPACE::string &typeName) ;
738 void setVector(Statement *stmt, unsigned int paramIndex,
739 const OCCI_STD_NAMESPACE::vector<unsigned int> &vect,
740 const OCCI_STD_NAMESPACE::string &schemaName,
741 const OCCI_STD_NAMESPACE::string &typeName) ;
742 void setVector(Statement *stmt, unsigned int paramIndex,
743 const OCCI_STD_NAMESPACE::vector<double> &vect,
744 const OCCI_STD_NAMESPACE::string &schemaName,
745 const OCCI_STD_NAMESPACE::string &typeName) ;
746 void setVector(Statement *stmt, unsigned int paramIndex,
747 const OCCI_STD_NAMESPACE::vector<BDouble> &vect,
748 const OCCI_STD_NAMESPACE::string &schemaName,
749 const OCCI_STD_NAMESPACE::string &typeName) ;
750 void setVector(Statement *stmt, unsigned int paramIndex,
751 const OCCI_STD_NAMESPACE::vector<float> &vect,
752 const OCCI_STD_NAMESPACE::string &schemaName,
753 const OCCI_STD_NAMESPACE::string &typeName) ;
754 void setVector(Statement *stmt, unsigned int paramIndex,
755 const OCCI_STD_NAMESPACE::vector<BFloat> &vect,
756 const OCCI_STD_NAMESPACE::string &schemaName,
757 const OCCI_STD_NAMESPACE::string &typeName) ;
758 void setVector(Statement *stmt, unsigned int paramIndex,
759 const OCCI_STD_NAMESPACE::vector<Number> &vect,
760 const OCCI_STD_NAMESPACE::string &schemaName,
761 const OCCI_STD_NAMESPACE::string &typeName);
762 void setVector(Statement *stmt, unsigned int paramIndex,
763 const OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string> &vect,
764 const OCCI_STD_NAMESPACE::string &schemaName,
765 const OCCI_STD_NAMESPACE::string &typeName) ;
766 void setVector(Statement *stmt, unsigned int paramIndex,
767 const OCCI_STD_NAMESPACE::vector<RefAny> &vect,
768 const OCCI_STD_NAMESPACE::string &schemaName,
769 const OCCI_STD_NAMESPACE::string &typeName) ;
770 void setVector(Statement *stmt, unsigned int paramIndex,
771 const OCCI_STD_NAMESPACE::vector<Blob> &vect,
772 const OCCI_STD_NAMESPACE::string &schemaName,
773 const OCCI_STD_NAMESPACE::string &typeName) ;
774 void setVector(Statement *stmt, unsigned int paramIndex,
775 const OCCI_STD_NAMESPACE::vector<Clob> &vect,
776 const OCCI_STD_NAMESPACE::string &schemaName,
777 const OCCI_STD_NAMESPACE::string &typeName) ;
778 void setVector(Statement *stmt, unsigned int paramIndex,
779 const OCCI_STD_NAMESPACE::vector<Bfile> &vect,
780 const OCCI_STD_NAMESPACE::string &schemaName,
781 const OCCI_STD_NAMESPACE::string &typeName) ;
782 void setVector(Statement *stmt, unsigned int paramIndex,
783 const OCCI_STD_NAMESPACE::vector<Timestamp> &vect,
784 const OCCI_STD_NAMESPACE::string &schemaName,
785 const OCCI_STD_NAMESPACE::string &typeName) ;
786 void setVector(Statement *stmt, unsigned int paramIndex,
787 const OCCI_STD_NAMESPACE::vector<IntervalDS> &vect,
788 const OCCI_STD_NAMESPACE::string &schemaName,
789 const OCCI_STD_NAMESPACE::string &typeName) ;
790 void setVector(Statement *stmt, unsigned int paramIndex,
791 const OCCI_STD_NAMESPACE::vector<IntervalYM> &vect,
792 const OCCI_STD_NAMESPACE::string &schemaName,
793 const OCCI_STD_NAMESPACE::string &typeName) ;
794 void setVector(Statement *stmt, unsigned int paramIndex,
795 const OCCI_STD_NAMESPACE::vector<Date> &vect,
796 const OCCI_STD_NAMESPACE::string &schemaName,
797 const OCCI_STD_NAMESPACE::string &typeName) ;
798 template <class T>
799 void setVectorOfRefs(Statement *stmt, unsigned int paramIndex,
800 const OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
801 const OCCI_STD_NAMESPACE::string &schemaName,
802 const OCCI_STD_NAMESPACE::string &typeName) ;
803
804 #if !defined(WIN32COMMON) && !defined(__MVS__)
805 template <class T>
806 void setVector(Statement *stmt, unsigned int paramIndex,
807 const OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
808 const OCCI_STD_NAMESPACE::string &schemaName,
809 const OCCI_STD_NAMESPACE::string &typeName) ;
810 #endif
811
812 #if defined(WIN32COMMON) || defined(__MVS__)
813 template <class T>
814 void setVector( Statement *stmt, unsigned int paramIndex,
815 const OCCI_STD_NAMESPACE::vector< T > &vect,
816 const OCCI_STD_NAMESPACE::string &schemaName,
817 const OCCI_STD_NAMESPACE::string &typeName) ;
818 #else
819 template <class T>
820 void setVector( Statement *stmt, unsigned int paramIndex,
821 const OCCI_STD_NAMESPACE::vector<T* > &vect, const OCCI_STD_NAMESPACE::string
822 &schemaName, const OCCI_STD_NAMESPACE::string &typeName) ;
823 #endif
824
825/*-------------------------------------------------------------------------
826 Statement setVector function - UTF16 support
827 -------------------------------------------------------------------------
828*/
829 void setVector(Statement *stmt, unsigned int paramIndex,
830 const OCCI_STD_NAMESPACE::vector<int> &vect,
831 const UString &schemaName,
832 const UString &typeName) ;
833 void setVector(Statement *stmt, unsigned int paramIndex,
834 const OCCI_STD_NAMESPACE::vector<unsigned int> &vect,
835 const UString &schemaName,
836 const UString &typeName) ;
837 void setVector(Statement *stmt, unsigned int paramIndex,
838 const OCCI_STD_NAMESPACE::vector<double> &vect,
839 const UString &schemaName,
840 const UString &typeName) ;
841 void setVector(Statement *stmt, unsigned int paramIndex,
842 const OCCI_STD_NAMESPACE::vector<BDouble> &vect,
843 const UString &schemaName,
844 const UString &typeName) ;
845 void setVector(Statement *stmt, unsigned int paramIndex,
846 const OCCI_STD_NAMESPACE::vector<float> &vect,
847 const UString &schemaName,
848 const UString &typeName) ;
849 void setVector(Statement *stmt, unsigned int paramIndex,
850 const OCCI_STD_NAMESPACE::vector<BFloat> &vect,
851 const UString &schemaName,
852 const UString &typeName) ;
853 void setVector(Statement *stmt, unsigned int paramIndex,
854 const OCCI_STD_NAMESPACE::vector<Number> &vect,
855 const UString &schemaName,
856 const UString &typeName);
857 void setVector(Statement *stmt, unsigned int paramIndex,
858 const OCCI_STD_NAMESPACE::vector<UString> &vect,
859 const UString &schemaName,
860 const UString &typeName) ;
861 void setVector(Statement *stmt, unsigned int paramIndex,
862 const OCCI_STD_NAMESPACE::vector<UString> &vect,
863 const OCCI_STD_NAMESPACE::string &schemaName,
864 const OCCI_STD_NAMESPACE::string &typeName) ;
865 void setVector(Statement *stmt, unsigned int paramIndex,
866 const OCCI_STD_NAMESPACE::vector<RefAny> &vect,
867 const UString &schemaName,
868 const UString &typeName) ;
869 void setVector(Statement *stmt, unsigned int paramIndex,
870 const OCCI_STD_NAMESPACE::vector<Blob> &vect,
871 const UString &schemaName,
872 const UString &typeName) ;
873 void setVector(Statement *stmt, unsigned int paramIndex,
874 const OCCI_STD_NAMESPACE::vector<Clob> &vect,
875 const UString &schemaName,
876 const UString &typeName) ;
877 void setVector(Statement *stmt, unsigned int paramIndex,
878 const OCCI_STD_NAMESPACE::vector<Bfile> &vect,
879 const UString &schemaName,
880 const UString &typeName) ;
881 void setVector(Statement *stmt, unsigned int paramIndex,
882 const OCCI_STD_NAMESPACE::vector<Timestamp> &vect,
883 const UString &schemaName,
884 const UString &typeName) ;
885 void setVector(Statement *stmt, unsigned int paramIndex,
886 const OCCI_STD_NAMESPACE::vector<IntervalDS> &vect,
887 const UString &schemaName,
888 const UString &typeName) ;
889 void setVector(Statement *stmt, unsigned int paramIndex,
890 const OCCI_STD_NAMESPACE::vector<IntervalYM> &vect,
891 const UString &schemaName,
892 const UString &typeName) ;
893 void setVector(Statement *stmt, unsigned int paramIndex,
894 const OCCI_STD_NAMESPACE::vector<Date> &vect,
895 const UString &schemaName,
896 const UString &typeName) ;
897 template <class T>
898 void setVectorOfRefs(Statement *stmt, unsigned int paramIndex,
899 const OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
900 const UString &schemaName,
901 const UString &typeName) ;
902
903 #if !defined(WIN32COMMON) && !defined(__MVS__)
904 template <class T>
905 void setVector(Statement *stmt, unsigned int paramIndex,
906 const OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
907 const UString &schemaName,
908 const UString &typeName) ;
909 #endif
910
911 #if defined(WIN32COMMON) || defined(__MVS__)
912 template <class T>
913 void setVector( Statement *stmt, unsigned int paramIndex,
914 const OCCI_STD_NAMESPACE::vector< T > &vect,
915 const UString &schemaName,
916 const UString &typeName) ;
917 #else
918 template <class T>
919 void setVector( Statement *stmt, unsigned int paramIndex,
920 const OCCI_STD_NAMESPACE::vector<T* > &vect, const UString
921 &schemaName, const UString &typeName) ;
922 #endif
923
924
925/* Global method for array pins */
926template <class T>
927void pinVectorOfRefs( const Connection *conn,
928OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
929OCCI_STD_NAMESPACE::vector<T* > &vectObj,
930LockOptions lockOpt = OCCI_LOCK_NONE );
931
932template <class T>
933void pinVectorOfRefs( const Connection *conn,
934OCCI_STD_NAMESPACE::vector<Ref<T> > &vect,
935LockOptions lockOpt = OCCI_LOCK_NONE );
936
937#ifdef ORAXB8_DEFINED
938 void readVectorOfBfiles(const Connection *conn,
939 OCCI_STD_NAMESPACE::vector<Bfile> &vec,
940 oraub8 *byte_amts, oraub8 *offsets,
941 unsigned char *buffers[], oraub8 *buffer_lens);
942
943 void readVectorOfBlobs(const Connection *conn,
944 OCCI_STD_NAMESPACE::vector<Blob> &vec,
945 oraub8 *byte_amts, oraub8 *offsets,
946 unsigned char *buffers[], oraub8 *buffer_lens);
947 void writeVectorOfBlobs(const Connection *conn,
948 OCCI_STD_NAMESPACE::vector<Blob> &vec,
949 oraub8 *byte_amts, oraub8 *offsets,
950 unsigned char *buffers[], oraub8 *buffer_lens);
951
952 void readVectorOfClobs(const Connection *conn,
953 OCCI_STD_NAMESPACE::vector<Clob> &vec,
954 oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets,
955 unsigned char *buffers[], oraub8 *buffer_lens);
956 void writeVectorOfClobs(const Connection *conn,
957 OCCI_STD_NAMESPACE::vector<Clob> &vec,
958 oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets,
959 unsigned char *buffers[], oraub8 *buffer_lens);
960 void readVectorOfClobs(const Connection *conn,
961 OCCI_STD_NAMESPACE::vector<Clob> &vec,
962 oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets,
963 utext *buffers[], oraub8 *buffer_lens);
964 void writeVectorOfClobs(const Connection *conn,
965 OCCI_STD_NAMESPACE::vector<Clob> &vec,
966 oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets,
967 utext *buffers[], oraub8 *buffer_lens);
968#endif
969
970
971/*---------------------------------------------------------------------------
972 INTERNAL FUNCTIONS
973 ---------------------------------------------------------------------------*/
974
975
976} /* end of namespace occi */
977} /* end of namespace oracle */
978
979
980#endif /* _olint */
981
982#endif /* OCCICOMMON_ORACLE */