Files correlati : Commento : - Creazione nuova cartella per contenere tutte le librerie esterne - Aggiunta nuova libreria sqlapi per interfacciare campo a vari DB git-svn-id: svn://10.65.10.50/branches/R_10_00@24149 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			3634 lines
		
	
	
		
			158 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			3634 lines
		
	
	
		
			158 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (c) 1993, 2006, Oracle. All rights reserved.  */
 | |
| 
 | |
| /*
 | |
|   Author:             Srinath Krishnaswamy
 | |
|   Date:               11/24/93
 | |
|   Source documents:   "Functional Specification for C Language Mapping of
 | |
|                       OTS Types, Object Management Subsystem", "Oracle C
 | |
|                       Coding Standards version 2.2", and the header file
 | |
|                       template
 | |
|   Rule sets:          the generic and .h file rule sets
 | |
|   Quality status:     not exited
 | |
|   Identification tag: [ one or more letters to identify the .h file ]
 | |
|   Revision code:      11/24/93
 | |
|  
 | |
|   NAME
 | |
| 
 | |
|     ORL - ORacle's external C Language interface to primitive OTS types
 | |
|  
 | |
|   DESCRIPTION
 | |
| 
 | |
|     This header file contains C langauge interface to the OTS primitive
 | |
|     types. The interface includes C mapping of OTS primitive types and
 | |
|     the prototype of the pre-defined operations on the primitive types.
 | |
|  
 | |
|     ***********************************************************************
 | |
|     *** NOTE: The OCI functions for objects requires the                ***
 | |
|     ***       application to be running in OBJECT mode. That is, during ***
 | |
|     ***       process initialization OCIInitialize(), the mode          ***
 | |
|     ***       specified should be OBJECT mode.                          ***
 | |
|     **                OCIInitialize(OCI_OBJECT, ..);                    ***
 | |
|     ***********************************************************************
 | |
| 
 | |
|   RELATED DOCUMENTS
 | |
| 
 | |
|     [1] Krishnaswamy, Srinath and Nguyen, Tin A., "Functional Specification
 | |
|         for C Language Mapping of OTS Types, Object Management Subsystem",
 | |
|         March 1994.
 | |
|     [2] Nguyen, Tin A., "The Open Type System", Oracle Corporation,
 | |
|         February 1994.
 | |
|     [3] Klein, Jonathan D., "Large Field Management", Oracle Corporation,
 | |
|         October 1993.
 | |
|  
 | |
|   PUBLIC FUNCTIONS
 | |
|  
 | |
|     OCI - OCI functions to manipulate Oracle Number, float and decimal
 | |
|       ARITHMETIC
 | |
|         OCINumberInc - OCINumber INCrement (optimized)
 | |
|         OCINumberDec - OCINumber DECrement (optimized)
 | |
|         OCINumberAdd - OCINumber ADD numbers
 | |
|         OCINumberSub - OCINumber SUBtract numbers
 | |
|         OCINumberMul - OCINumber MULtiply numbers
 | |
|         OCINumberDiv - OCINumber DIVide numbers
 | |
|         OCINumberMod - OCINumber MODulo division
 | |
|         OCINumberIntPower - OCINumber integer PoWeR
 | |
|         OCINumberShift - OCINumber decimal ShiFT number
 | |
|         OCINumberNeg - OCINumber NEGate number
 | |
|         OCINumberAbs - OCINumber ABSolute value
 | |
|         OCINumberCeil - OCINumber CEiling of number
 | |
|         OCINumberFloor - OCINumber FLooR of number
 | |
|         OCINumberSqrt - OCINumber SQuare Root of number
 | |
|         OCINumberSign - OCINumber get SIGN of number
 | |
|       NATIVE TYPE CONVERSION
 | |
|         OCINumberToInt  - OCINumber convert number TO machine-format Integer
 | |
|         OCINumberFromInt - OCINumber convert machine-format Integer TO Number
 | |
|         OCINumberToReal  - OCINumber convert number TO machine-format Real
 | |
|         OCINumberToRealArray  - OCINumber convert array of numbers TO
 | |
|                                 machine-format Real
 | |
|         OCINumberFromReal - OCINumber convert machine-format Real TO Number
 | |
|       TEXT STRING CONVERSION
 | |
|         OCINumberToText  - OCINumber convert number TO String
 | |
|         OCINumberFromText - OCINumber convert String TO Number
 | |
|       COMPARISON
 | |
|         OCINumberCmp - OCINumber CoMPare numbers
 | |
|         OCINumberIsZero - OCINumber comparison with ZERo
 | |
|         OCINumberIsInt - OCINumber Is an Integer
 | |
|       ASSIGNMENT
 | |
|         OCINumberAssign - OCINumber ASsiGn number
 | |
|         OCINumberSetZero - OCINumber Set number to Zero value
 | |
|         OCINumberSetPi - OCINumber Set number to Pi
 | |
|       ROUNDING
 | |
|         OCINumberTrunc - OCINumber TRUncate an Oracle number
 | |
|         OCINumberRound - OCINumber ROUnd number
 | |
|         OCINumberPrec - OCINumber round to Precision digits
 | |
|       TRANSCENDENTAL
 | |
|         OCINumberSin - OCINumber SINe
 | |
|         OCINumberArcSin - OCINumber Arc SINe
 | |
|         OCINumberHypSin - OCINumber SiNe Hyperbolic
 | |
|         OCINumberCos - OCINumber COSine
 | |
|         OCINumberArcCos - OCINumber Arc COSine
 | |
|         OCINumberHypCos - OCINumber CoSine Hyperbolic
 | |
|         OCINumberTan - OCINumber TANgent
 | |
|         OCINumberArcTan - OCINumber Arc TANgent
 | |
|         OCINumberArcTan2 - OCINumber Arc TaNgent 2
 | |
|         OCINumberHypTan - OCINumber TaNgent Hyperbolic
 | |
|         OCINumberPower - OCINumber arbitrary Base EXponentiation
 | |
|         OCINumberExp - OCINumber EXPonentiation to base e
 | |
|         OCINumberLn  - OCINumber Logarithm Natural
 | |
|         OCINumberLog - OCINumber LOGarithm to arbitrary base
 | |
| 
 | |
|     OCIDate - OCI functions to manipulate OCI Date
 | |
|       OCIDateToExternal - OCIDate convert date to external form
 | |
|       OCIDateFromExternal - OCIDate convert external form of date into OCIDate
 | |
|       OCIDateAssign - OCIDate Assignment
 | |
|       OCIDateToText  - OCIDate convert date TO String
 | |
|       OCIDateFromText - OCIDate convert String TO Date
 | |
|       OCIDateZoneToZone - OCIDate convert date from one time 
 | |
|                         Zone TO another Zone
 | |
|       OCIDateCompare - OCIDate CoMPare dates
 | |
|       OCIDateAddMonths - OCIDate ADd or subtract Months
 | |
|       OCIDateAddDays - OCIDate ADd or subtract Days
 | |
|       OCIDateLastDay - OCIDate get date of LaST day of month
 | |
|       OCIDateDaysBetween - OCIDate get number of days BeTWeen two dates
 | |
|       OCIDateNextDay - OCIDate get date of Next DaY
 | |
|       OCIDateCheck - OCIDate CHecK if the given date is valid
 | |
|       OCIDateSysDate - OCIDate get current SYStem date and time
 | |
| 
 | |
|     OCIString - OCI String functions to manipulate Variable-length string
 | |
|       OCIStringAssign - OCIString Assign string to string
 | |
|       OCIStringAssignText - OCIString Assign Text string to string
 | |
|       OCIStringResize - OCIString ReSiZe string
 | |
|       OCIStringSize - OCIString get String Size
 | |
|       OCIStringPtr - OCIString get String PoinTeR
 | |
|       OCIStringAllocSize - OCIString get Allocated SiZe
 | |
|  
 | |
|     OCIRaw - OCI Raw functions to manipulate variable-length raW
 | |
|       OCIRawAssignRaw - OCIRaw Assign Raw (of type OCIRaw*) to raw
 | |
|                         (of type OCIRaw*)
 | |
|       OCIRawResize - OCIRaw Resize raw
 | |
|       OCIRawSize - OCIRaw get Raw Size
 | |
|       OCIRawPtr  - OCIRaw get Raw data Pointer
 | |
|       OCIRawAllocSize - OCIRaw get Allocated Size
 | |
| 
 | |
|     OCIColl - OCI Collection generic functions. These functions can be 
 | |
|                 used to manipulate both variable-length array (varray) and 
 | |
|                 nested table.
 | |
|       OCICollSize  - OCIColl return current SIZe of the given collection
 | |
|                 (in number of elements)
 | |
|       OCICollMax  - OCIColl return the MAXimum number of elements in the
 | |
|                 collection (i.e. upper-bound)
 | |
|       OCICollGetElem  - OCIColl GET pointer to the element at the given 
 | |
|                 position
 | |
|       OCICollAssignElem  - OCIColl assign to element at given index
 | |
|       OCICollAssign  - OCIColl ASsiGn collection; perform deep-copy of source 
 | |
|                 collection to target collection
 | |
|       OCICollAppend  - OCIColl aPPend the given element to the end of the
 | |
|                 collection
 | |
|       OCICollTrim  - OCIColl trim (delete) the given number of elements 
 | |
|                 from the end of the collection
 | |
|       OCICollIsLocator - OCIColl indicates whether a collection is locator
 | |
|                          based or not.
 | |
|       OCIIterCreate  - OCIColl Create an ITerator to scan the collection 
 | |
|                 elements
 | |
|       OCIIterDelete  - OCIColl Delete ITerator
 | |
|       OCIIterInit  - OCIColl Initialize ITerator to scan the given collection
 | |
|       OCIIterGetCurrent - OCIColl Iterator based, get CURrent 
 | |
|                 collection element
 | |
|       OCIIterNext - OCIColl Iterator based, get NeXT collection element
 | |
|       OCIIterPrev - OCIColl Iterator based, get PReVious collection element
 | |
|  
 | |
|       OCITable - OCI functions to manipulate nested Table. The OCIColl*() and 
 | |
|                 OCITable*() functions can be used to manipulate nested table
 | |
|       OCITableDelete(i) - OCITable if element(i) exists then the element is 
 | |
|                 marked as deleted else the function returns false. So 
 | |
|                 delete's create "holes".
 | |
|       OCITableExists(i) - OCITable return true iff an element at
 | |
|                 position i EXIsts
 | |
|       OCITableFirst  - OCITable return the smallest value of i for which
 | |
|                 exists(i) is true.
 | |
|       OCITableLast  - OCITable return the largest value of i for which 
 | |
|                 exists(i) is true.
 | |
|       OCITableNext(i) - OCITable return pointer to the smallest position j, 
 | |
|                 greater than i, such that OCITableExists(j) is true
 | |
|       OCITablePrev(i) - OCITable return pointer to the largest position j,
 | |
|                 less than i, such that OCITableExists(j) is true
 | |
|       OCITableSize - OCITable return current SIZe of the given nested table not
 | |
|                 including deleted elements
 | |
| 
 | |
|     OCIRef - OCI functions to manipulate object Reference
 | |
|       OCIRefClear  - OCIRef CLeaR or nullify a ref
 | |
|       OCIRefAssign  - OCIRef ASsiGn a ref to another
 | |
|       OCIRefIsEqual  - OCIRef compare two refs for EQUality
 | |
|       OCIRefIsNull  - OCIRef test if a ref is NULl 
 | |
|       OCIRefFromHex  - OCIRef convert a Hexadecimal string TO a Ref
 | |
|       OCIRefToHex   - OCIRef convert a ref to a Hexadecimal string
 | |
|       OCIRefHexSize  - OCIRef get size of buffer in bytes to store hexadecimal
 | |
|                 string
 | |
| 
 | |
|   OBSOLETE: to be replaced by functions from oci.h:
 | |
| 
 | |
|     ORLL - ORL functions to manipulate lob Locators
 | |
|       orllasg   - ORLL AsiGn one locator to another
 | |
|       orllequ   - ORLL compare two locators for EQUality
 | |
|       orlliini  - ORLL Is the locator INItialized?
 | |
|       orllgsz   - ORLL Get locator SiZe
 | |
|       orllgcid  - ORLL Get Character set ID
 | |
| 
 | |
|       NOTE: The following are specific to FILE lobs:
 | |
| 
 | |
|       orllsnm - ORLL Set directory alias and file NaMe in the locator
 | |
|       orllgnm - ORLL Get directory alias and file NaMe from the locator
 | |
|  
 | |
|   EXAMPLES
 | |
| 
 | |
|     Examples are given in the description of each function where
 | |
|     relevant.
 | |
|  
 | |
|   NOTES
 | |
| 
 | |
|     This file has been subsetted to contain ONLY the routines that will
 | |
|     be in the first release.
 | |
|  
 | |
|   QUESTIONS
 | |
|      
 | |
|   MODIFIED
 | |
|     bkhaladk   08/01/05 - add defn for OCIBinXmlReposCtx 
 | |
|     dmukhin    06/29/05 - ANSI prototypes; miscellaneous cleanup 
 | |
|     srseshad   03/12/03 - convert oci public api to ansi
 | |
|     rpingte    11/21/02 - Add OCICollGetElemArray and OCINumberToRealArray
 | |
|     aahluwal   06/03/02 - bug 2360115
 | |
|     gayyappa   02/01/02 - fix 2210776 : change Dom to DOM 
 | |
|     whe        09/25/01 - add OCIXMLType & OCIDomDocument opaque types
 | |
|     bpalaval   02/09/01   - Change text to oratext.
 | |
|     rkasamse   09/20/99 -   lint changes
 | |
|     whe        09/01/99 -   976457:check __cplusplus for C++ code
 | |
|     hsbedi     08/11/99 -   Add macro
 | |
|     rxgovind   10/14/98 -  make non exposed calls (OCIRowType etc) private
 | |
|     rxgovind   06/09/98 -  update OCIRowTypeCreate
 | |
|     nmantrav   05/11/98 -  add OCIRowTypeGetCount
 | |
|     rxgovind   03/29/98 -  add OCIRowType and OCIRowData interfaces
 | |
|     jwijaya    05/06/98  - add OCICollIsLocator                                
 | |
|     rxgovind   03/18/98 -  opaque types: move to kolo.h
 | |
|     etucker    02/02/98 -  add comments for Dec and Inc
 | |
|     etucker    01/29/98 -  Finish core5 integration
 | |
|     rxgovind   11/11/97 -  opaque types
 | |
|     etucker    10/28/97 -  add ORLN functions for SDK
 | |
|     cxcheng    07/28/97 -  remove OCILobLocator #define
 | |
|     skmishra   05/13/97 -  stdcc compatibility changes
 | |
|     skrishna   04/25/97 -  rename OCINumber*(): Exp Power TanHyp Zero Init
 | |
|                            TanToArc Sqr Truncate and Compare 
 | |
|     skotsovo   03/31/97 -  remove OCILobLocatorSize
 | |
|     skrishna   03/25/97 -  remove orld2i and orldi2d
 | |
|     skrishna   03/18/97 -  fix ifdef for supporting ansi and k&r proto-types
 | |
|     cxcheng    02/06/97 -  take out short name support except with SLSHORTNAME
 | |
|     skrishna   01/06/97 -  update OCITableSize() comments
 | |
|     skrishna   12/27/96 -  fix OCIDateGet/OCIDateSet
 | |
|     skrishna   12/12/96 -  update OCICollGelElem comments
 | |
|     skrishna   11/07/96 -  OCICollGetElem: interface change
 | |
|     skrishna   11/05/96 -  add OCIDate Get/Set and OCIDateAssign
 | |
|     cxcheng    10/31/96 -  change OCINumberTanHyp to OCINumberHypTan
 | |
|     cxcheng    10/30/96 -  #define orll short names to long names
 | |
|     dchatter   10/26/96 -  fix some OCI file long names
 | |
|     cxcheng    10/24/96 -  remove unnecessary comment in front
 | |
|     cxcheng    10/14/96 -  disable long name mapping for LOB functions
 | |
|     skrishna   10/13/96 -  continue beautification
 | |
|     skotsovo   10/16/96 -  update ocilob names
 | |
|     cxcheng    10/09/96 -  add structure members in #define for date/time
 | |
|     cxcheng    10/09/96 -  more lint fixes
 | |
|     skrishna   10/09/96 -  continue beautification
 | |
|     cxcheng    10/09/96 -  more fixes
 | |
|     skrishna   10/09/96 -  change fixed-char rep. to orlvstr*
 | |
|     jwijaya    10/08/96 -  continue beautification
 | |
|     jwijaya    10/07/96 -  beautify
 | |
|     cxcheng    10/07/96 -  more changes
 | |
|     cxcheng    10/04/96 -  replace short names with long names
 | |
|     skrishna   10/01/96 -  orlcsiz, orltsiz: change prototype to take errhdl
 | |
|     skrishna   09/23/96 -  fix lint errors
 | |
|     skotsovo   09/23/96 -  remove orllmkcur().
 | |
|     jwijaya    09/17/96 -  comments on null ref
 | |
|     skrishna   09/19/96 -  change orlraw format
 | |
|     skotsovo   09/19/96 -  add orlliini and remove orllnul
 | |
|     skrishna   08/14/96 -  orlvstr: change format to ub4 followed by text
 | |
|     jboonleu   08/06/96 -  update comment
 | |
|     skotsovo   08/08/96 -  revert to locators instead of descriptors as input t
 | |
|     jboonleu   07/23/96 -  remove orlrcur
 | |
|     skrishna   07/06/96 -  add orltsiz
 | |
|     skrishna   07/05/96 -  add orld2i and orldi2d
 | |
|     jwijaya    07/03/96 -  add ANSI prototypes
 | |
|     skrishna   06/27/96 -  document default string format in orlds2d & orld2s
 | |
|     skrishna   06/25/96 -  change max date value
 | |
|     skrishna   06/18/96 -  modify orld2s() comments
 | |
|     skotsovo   06/13/96 -  orll functions take lob descriptors instead of locat
 | |
|     rxgovind   06/05/96 -  change prototype of orlrcur to take ocienvh
 | |
|     skrishna   05/30/96 -  support collection trimming
 | |
|     skrishna   05/30/96 -  remove orlralo/fre and orllalo/fre instead use 
 | |
|                            orionew/fre
 | |
|     skrishna   05/28/96 -  add orlt*() and modify orla*()
 | |
|     skotsovo   05/23/96 -  add orlbl typedefs for pro*c
 | |
|     jboonleu   05/14/96 -  add orlrcur
 | |
|     rxgovind   05/08/96 -  changes for 3gl callbacks
 | |
|     skotsovo   05/01/96 -  in orllasg, no need to alloc orlbl*
 | |
|     skrishna   04/21/96 -  merge changes from 960418 object branch into big
 | |
|     skrishna   04/17/96 -  rename orlrcpy to orlrasg
 | |
|     skrishna   04/12/96 -  add orlr2h and orlrh2r functions
 | |
|     skotsovo   04/15/96 -  add fnt to make the lob locator current
 | |
|     skrishna   04/08/96 -  change orl*() to take ocienvh* and ocierrh* instead
 | |
|                            of oroenv*
 | |
|     skotsovo   03/22/96 -  add locator functions
 | |
|     skotsovo   03/22/96 -  add locator functions
 | |
|     skrishna   02/27/96 -  remove mlslabel interface
 | |
|     skotsovo   02/20/96 -  remove orlbty and use dty type instead.
 | |
|     skotsovo   02/14/96 -  add text file lobs.
 | |
|     skrishna   01/31/96 -  update comments of orln2r, orldchk, orlds2d & orld2s
 | |
|     skrishna   01/31/96 -  change orld2s() and orln2s() to return string length
 | |
|     skrishna   01/21/96 -  remove old raw interface 
 | |
|     skrishna   12/14/95 -  add raw interface
 | |
|     skotsovo   01/03/96 -  change LOB offsets and lengths from ub4 to ubig_ora
 | |
|                            to support 64 bit machines.
 | |
|     skotsovo   10/30/95 -  add orlblsiz() to get lob locator size
 | |
|     skrishna   10/24/95 -  move ref functions from ori and update the ref
 | |
|                            functions to support variable-length ref
 | |
|     cxcheng    10/20/95 -  add more comments on number versions
 | |
|     cxcheng    10/13/95 -  add more number functions
 | |
|     cxcheng    08/29/95 -  Support for segmented varrays
 | |
|     cxcheng    08/18/95 -  modifiy orlmls structure
 | |
|     skrishna   06/06/95 -  rename orln, orld, orlvs and orlva to orlnum,
 | |
|                            orldat, orlvstr and orlvary respectively 
 | |
|     skrishna   11/15/94 -  remove orlnget() function 
 | |
|     skrishna   09/20/94 -  modify orldbtw() to return number of days only 
 | |
|     skrishna   08/24/94 -  change format string length type from ub4 to ub1 
 | |
|     skrishna   07/19/94 -  Rename orln2c & orlnc2n to orln2s & orlns2n 
 | |
|     skrishna   06/29/94 -  Add blob interface; add examples 
 | |
|     skrishna   06/23/94 -  Update comments and format 
 | |
|     skrishna   05/19/94 -  update varray append comments 
 | |
|     skrishna    05/05/94 -  Subsetting 
 | |
|     skrishna    11/24/93 -  Creation
 | |
| */
 | |
| 
 | |
| #ifndef ORATYPES
 | |
| #include <oratypes.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef ORO_ORACLE
 | |
| #include <oro.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef ORT_ORACLE
 | |
| #include <ort.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef OCI_ORACLE
 | |
| #include <oci.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef ORL_ORACLE
 | |
| #define ORL_ORACLE
 | |
| 
 | |
| /*---------------------------------------------------------------------------*/
 | |
| /*                         SHORT NAMES SUPPORT SECTION                       */
 | |
| /*---------------------------------------------------------------------------*/
 | |
| 
 | |
| #ifdef SLSHORTNAME
 | |
| 
 | |
| /* the following are short names that are only supported on IBM mainframes
 | |
|    with the SLSHORTNAME defined.
 | |
|    With this all subsequent long names will actually be substituted with
 | |
|    the short names here */
 | |
| 
 | |
| #define OCIArray                        orlvary
 | |
| #define OCIColl                         orlcol
 | |
| #define OCICollAppend                   orlcapp
 | |
| #define OCICollAssign                   orlcasg
 | |
| #define OCICollAssignElem               orlcase
 | |
| #define OCICollGetElem                  orlcget
 | |
| #define OCICollGetElemArray             orlcgeta
 | |
| #define OCICollMax                      orlcmax
 | |
| #define OCICollSize                     orlcsiz
 | |
| #define OCICollTrim                     orlctrm
 | |
| #define OCICollIsLocator                orlcilc
 | |
| #define OCIDate                         orldat
 | |
| #define OCIDateAddDays                  orldadd
 | |
| #define OCIDateAddMonths                orldadm
 | |
| #define OCIDateCheck                    orldchk
 | |
| #define OCIDateCompare                  orldcmp
 | |
| #define OCIDateDD                       day_orldat
 | |
| #define OCIDateDaysBetween              orldbtw
 | |
| #define OCIDateFromText                 orlds2d
 | |
| #define OCIDateLastDay                  orldlst
 | |
| #define OCIDateMM                       mon_orldat
 | |
| #define OCIDateNextDay                  orldndy
 | |
| #define OCIDateSysDate                  orldsys
 | |
| #define OCIDateTime                     time_orldat
 | |
| #define OCIDateYYYY                     gye_orldat
 | |
| #define OCIDateZoneToZone               orldz2z
 | |
| #define OCIIter                         orlcitr
 | |
| #define OCIIterCreate                   orlccit
 | |
| #define OCIIterDelete                   orlcdit
 | |
| #define OCIIterGetCurrent               orlcicur
 | |
| #define OCIIterInit                     orlciit
 | |
| #define OCIIterNext                     orlcinxt
 | |
| #define OCIIterPrev                     orlciprv
 | |
| #define OCINumber                       orlnum
 | |
| #define OCINumberAbs                    orlnabs
 | |
| #define OCINumberAdd                    orlnadd
 | |
| #define OCINumberArcCos                 orlnacos
 | |
| #define OCINumberArcSin                 orlnasin
 | |
| #define OCINumberArcTan                 orlnatan
 | |
| #define OCINumberAssign                 orlnasg
 | |
| #define OCINumberCeil                   orlncel
 | |
| #define OCINumberCos                    orlncos
 | |
| #define OCINumberDiv                    orlndiv
 | |
| #define OCINumberPower                  orlnbex
 | |
| #define OCINumberFloor                  orlnflr
 | |
| #define OCINumberFromInt                orlni2n
 | |
| #define OCINumberFromReal               orlnr2n
 | |
| #define OCINumberFromText               orlns2n
 | |
| #define OCINumberHypCos                 orlncsh
 | |
| #define OCINumberHypSin                 orlnsnh
 | |
| #define OCINumberSetZero                orlnini
 | |
| #define OCINumberSetPi                  orlnspi
 | |
| #define OCINumberInc                    orlninc
 | |
| #define OCINumberDec                    orlndec
 | |
| #define OCINumberIntPower               orlnpwr
 | |
| #define OCINumberLn                     orlnln
 | |
| #define OCINumberLog                    orlnlog
 | |
| #define OCINumberMod                    orlnmod
 | |
| #define OCINumberMul                    orlnmul
 | |
| #define OCINumberNeg                    orlnneg
 | |
| #define OCINumberPart                   orlnpart
 | |
| #define OCINumberExp                    orlnexp
 | |
| #define OCINumberRound                  orlnrou
 | |
| #define OCINumberPrec                   orlnpre
 | |
| #define OCINumberShift                  orlnsft
 | |
| #define OCINumberSign                   orlnsgn
 | |
| #define OCINumberSin                    orlnsin
 | |
| #define OCINumberSqrt                   orlnsqr
 | |
| #define OCINumberSub                    orlnsub
 | |
| #define OCINumberTan                    orlntan
 | |
| #define OCINumberHypTan                 orlntnh
 | |
| #define OCINumberArcTan2                orlnatn2
 | |
| #define OCINumberToInt                  orln2i
 | |
| #define OCINumberToReal                 orln2r
 | |
| #define OCINumberToRealArray            orln2ra
 | |
| #define OCINumberToText                 orln2s
 | |
| #define OCINumberTrunc                  orlntru
 | |
| #define OCINumberCmp                    orlncmp
 | |
| #define OCINumberIsZero                 orlnzer
 | |
| #define OCINumberIsInt                  orlnint
 | |
| #define OCIRaw                          orlraw
 | |
| #define OCIRawAllocSize                 orlwasz
 | |
| #define OCIRawAssignBytes               orlwabr
 | |
| #define OCIRawAssignRaw                 orlwarr
 | |
| #define OCIRawPtr                       orlwgrp
 | |
| #define OCIRawResize                    orlwrsz
 | |
| #define OCIRawSize                      orlwgsz
 | |
| #define OCIRefAssign                    orlrasg
 | |
| #define OCIRefClear                     orlrclr
 | |
| #define OCIRefFromHex                   orlrh2r
 | |
| #define OCIRefHexSize                   orlrhsz
 | |
| #define OCIRefIsEqual                   orlrequ
 | |
| #define OCIRefIsNull                    orlrnul
 | |
| #define OCIRefToHex                     orlr2h
 | |
| #define OCIString                       orlvstr
 | |
| #define OCIStringAllocSize              orlvasz
 | |
| #define OCIStringAssign                 orlvass
 | |
| #define OCIStringAssignText             orlvats
 | |
| #define OCIStringPtr                    orlvgsp
 | |
| #define OCIStringResize                 orlvrsz
 | |
| #define OCIStringSize                   orlvgsz
 | |
| #define OCITable                        orltbl
 | |
| #define OCITableDelete                  orltdel
 | |
| #define OCITableExists                  orltexi
 | |
| #define OCITableFirst                   orltfst
 | |
| #define OCITableLast                    orltlst
 | |
| #define OCITableNext                    orltnxt
 | |
| #define OCITablePrev                    orltprv
 | |
| #define OCITableSize                    orltsiz
 | |
| #define OCITime                         orldtm
 | |
| #define OCITimeHH                       orldtmhh
 | |
| #define OCITimeMI                       orldtmmm
 | |
| #define OCITimeSS                       orldtmss
 | |
| #define OCI_LOBMODE_READONLY            ORLBMORO
 | |
| #define OCI_LOBMODE_READWRITE           ORLBMORW
 | |
| 
 | |
| #endif                                                        /* SLSHORTNAME */
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*                         NUMBER/FLOAT/DECIMAL TYPE                         */
 | |
| /*****************************************************************************/
 | |
| 
 | |
| #define OCI_NUMBER_SIZE 22
 | |
| struct OCINumber
 | |
| {
 | |
|   ub1 OCINumberPart[OCI_NUMBER_SIZE];
 | |
| };
 | |
| typedef struct OCINumber OCINumber;
 | |
| 
 | |
| /* 
 | |
|  * OCINumber - OCI Number mapping in c
 | |
|  *
 | |
|  * The OTS types: NUMBER, NUMERIC, INT, SHORTINT, REAL, DOUBLE PRECISION,
 | |
|  * FLOAT and DECIMAL are represented by OCINumber.
 | |
|  * The contents of OCINumber is opaque to clients. 
 | |
|  *
 | |
|  * For binding variables of type OCINumber in OCI calls (OCIBindByName(),
 | |
|  * OCIBindByPos(), and OCIDefineByPos()) use the type code SQLT_VNU.
 | |
|  */
 | |
| 
 | |
| /*
 | |
|    EXAMPLE 
 | |
| 
 | |
|    The following example shows how to manipulate an attribute of type 
 | |
|    oracle number.
 | |
|   
 | |
|      struct person
 | |
|      {
 | |
|        OCINumber sal;
 | |
|      };
 | |
|      typedef struct person person;
 | |
| 
 | |
|      OCIError *err;
 | |
|      person* joe;
 | |
|      person* tom;
 | |
|      person* debbie;
 | |
|      OCINumber  *joesal;
 | |
|      OCINumber  *tomsal;
 | |
|      OCINumber *debsal;
 | |
|      sword   status;
 | |
|      int     inum;
 | |
|      double  dnum;
 | |
|      OCINumber ornum;
 | |
|      char    buffer[21];
 | |
|      ub4     buflen;
 | |
|      sword   result;
 | |
|      
 | |
|      /o See oci.h for an example of how to initialize OCIError.
 | |
|       o For this example, assume the OCIEnv and OCIError has been
 | |
|       o initialized.
 | |
|       o/
 | |
| 
 | |
|      /o Pin joe, tom and debbie person objects in the object cache. See ori.h
 | |
|       o for an example on pinning objects. For this example, assume that
 | |
|       o joe, tom and debbie are pointing to pinned objects.
 | |
|       o/
 | |
|      joesal = &joe->sal;
 | |
|      tomsal = &tom->sal;
 | |
|      debsal = &debbie->sal;
 | |
| 
 | |
|      /o initialize joe's salary to be $12,000 o/
 | |
|      inum = 12000;
 | |
|      status = OCINumberFromInt(err, &inum, sizeof(inum), OCI_NUMBER_SIGNED,
 | |
|                                joesal);
 | |
|      if (status != OCI_SUCCESS)
 | |
|                               /o goto to handle error from OCINumberFromInt o/;
 | |
| 
 | |
|      /o initialize tom's salary to be same as joe o/
 | |
|      OCINumberAssign(err, joesal, tomsal);
 | |
| 
 | |
|      /o initialize debbie's salary to be 20% more than joe's o/
 | |
|      dnum = 1.2;
 | |
|      status = OCINumberFromReal(err, &dnum, sizeof(double), &ornum);
 | |
|      if (status != OCI_SUCCESS)
 | |
|                             /o goto to handle error from OCINumberFromReal o/;
 | |
|      status = OCINumberMul(err, joesal, &ornum, debsal);
 | |
|      if (status != OCI_SUCCESS)  /o goto to handle error from OCINumberMul o/;
 | |
| 
 | |
|      /o give tom a 50% raise o/
 | |
|      dnum = 1.5;
 | |
|      status = OCINumberFromReal(err, &dnum, sizeof(double), &ornum);
 | |
|      if (status != OCI_SUCCESS)
 | |
|                             /o goto to handle error from OCINumberFromReal o/;
 | |
|      status = OCINumberMul(err, tomsal, &ornum, tomsal);
 | |
|      if (status != OCI_SUCCESS)  /o goto to handle error from OCINumberMul o/;
 | |
| 
 | |
|      /o double joe's salary o/
 | |
|      status = OCINumberAdd(err, joesal, joesal, joesal);
 | |
|      if (status != OCI_SUCCESS)  /o goto to handle error from OCINumberAdd o/;
 | |
| 
 | |
|      /o get joe's salary in integer o/
 | |
|      status = OCINumberToInt(err, joesal, sizeof(inum), OCI_NUMBER_SIGNED,
 | |
|                              &inum);
 | |
|      if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToInt o/;
 | |
|      /o inum is set to 24000 o/
 | |
| 
 | |
|      /o get debbie's salary in double o/
 | |
|      status = OCINumberToReal(err, debsal, sizeof(dnum), &dnum);
 | |
|      if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToReal o/;
 | |
|      /o dnum is set to 14400 o/
 | |
| 
 | |
|      /o print tom's salary as DEM0001`8000.00 o/
 | |
|      buflen = sizeof(buffer);
 | |
|      status = OCINumberToText(err, tomsal, "C0999G9999D99", 13, 
 | |
|                  "NLS_NUMERIC_CHARACTERS='.`' NLS_ISO_CURRENCY='Germany'", 54,
 | |
|                  &buflen, buffer);
 | |
|      if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToText o/;
 | |
|      printf("tom's salary = %s\n", buffer);
 | |
| 
 | |
|      /o compare joe and tom's salary o/
 | |
|      status = OCINumberCmp(err, joesal, tomsal, &result);
 | |
|      if (status != OCI_SUCCESS)  /o goto to handle error from OCINumberCmp o/;
 | |
|      /o result is positive o/
 | |
| 
 | |
|      /o read debbie's new salary from string o/
 | |
|      status = OCINumberFromText(err, "48`000.00", 9, "99G999D99", 9,
 | |
|                       "NLS_NUMERIC_CHARACTERS='.`'", 27, debsal);
 | |
|      if (status != OCI_SUCCESS)
 | |
|                             /o goto to handle error from OCINumberFromText o/;
 | |
|      /o debbie's salary is now 48000.00 o/
 | |
| 
 | |
| */
 | |
| 
 | |
| /*----------------------------- OCINumberInc --------------------------------*/
 | |
| 
 | |
| sword OCINumberInc(    OCIError *err, OCINumber *number    );
 | |
| /*
 | |
|    NAME: OCINumberInc - OCINumber INCrement numbers
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN/OUT) a positive Oracle number to be incremented
 | |
|    DESCRIPTION:
 | |
|         Increment Oracle number in place. It is assumed that the input is
 | |
|         an integer between 0 and 100^21-2. If the is input too large, it will
 | |
|         be treated as 0 - the result will be an Oracle number 1. If the input
 | |
|         is not a positive integer, the result will be unpredictable.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberDec --------------------------------*/
 | |
| 
 | |
| sword OCINumberDec(    OCIError *err, OCINumber *number    );
 | |
| /*
 | |
|    NAME: OCINumberDec - OCINumber DECrement numbers
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN/OUT) - a positive Oracle number to be decremented
 | |
|    DESCRIPTION:
 | |
|         Decrement Oracle number in place. It is assumed that the input is an
 | |
|         integer between 1 and 100^21-2. If the input is too large, it will be
 | |
|         treated as 1 - the result will be an Oracle number 0. If the input is
 | |
|         not a positive integer, the result will be unpredictable.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberSetZero -------------------------------*/
 | |
| 
 | |
| void OCINumberSetZero(    OCIError *err, OCINumber *num    );
 | |
| /*
 | |
|    NAME: OCINumberSetZero - OCINumber Set number to Zero value
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - pointer to OCI error handle
 | |
|         num (OUT) - set to zero value
 | |
|    DESCRIPTION:
 | |
|         Initialize the given number to value 0.
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCINumberSetPi --------------------------------*/
 | |
| 
 | |
| void OCINumberSetPi(    OCIError *err, OCINumber *num    );
 | |
| /*
 | |
|    NAME: OCINumberSetPi - OCINumber Set number to Pi
 | |
|         err (IN/OUT) - pointer to OCI error handle
 | |
|         num (OUT) - set to zero value
 | |
|    DESCRIPTION:
 | |
|         Initialize the given number to value Pi.
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberAdd --------------------------------*/
 | |
| 
 | |
| sword OCINumberAdd(    OCIError *err, const OCINumber *number1, 
 | |
|                        const OCINumber *number2, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberAdd - OCINumber ADD numbers
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number1, number2 (IN) - numbers to be added
 | |
|         result (OUT) - result of adding 'number1' with 'number2'
 | |
|    DESCRIPTION:
 | |
|         Add 'number1' with 'number2' and return result in 'result'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberSub --------------------------------*/
 | |
| 
 | |
| sword OCINumberSub(    OCIError *err, const OCINumber *number1, 
 | |
|                        const OCINumber *number2, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberSub - OCINumber SUBtract numbers
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number1, number2 (IN) - 'number2' subtracted from 'number1'
 | |
|         result (OUT) - subtraction result
 | |
|    DESCRIPTION:
 | |
|         Subtract 'number2' from 'number1' and return result in 'result'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberMul --------------------------------*/
 | |
| 
 | |
| sword OCINumberMul(    OCIError *err, const OCINumber *number1, 
 | |
|                        const OCINumber *number2, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberMul - OCINumber MULtiply numbers
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number1, number2 (IN) - numbers to be multiplied
 | |
|         result (OUT) - multiplication result
 | |
|    DESCRIPTION:
 | |
|         Multiply 'number1' with 'number2' and return result in 'result'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberDiv --------------------------------*/
 | |
| 
 | |
| sword OCINumberDiv(    OCIError *err, const OCINumber *number1, 
 | |
|                        const OCINumber *number2, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberDiv - OCINumber DIVide numbers
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number1 (IN) - pointer to the numerator
 | |
|         number2 (IN) - pointer to the denominator
 | |
|         result (OUT) - division result
 | |
|    DESCRIPTION:
 | |
|         Divide 'number1' by 'number2' and return result in 'result'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           underflow errorr
 | |
|           overflow errorr
 | |
|           divide by zero errorr
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberMod --------------------------------*/
 | |
| 
 | |
| sword OCINumberMod(    OCIError *err, const OCINumber *number1, 
 | |
|                        const OCINumber *number2, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberMod - OCINumber MODulous
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number1 (IN) - pointer to the numerator
 | |
|         number2 (IN) - pointer to the denominator
 | |
|         result (OUT) - remainder of the result
 | |
|    DESCRIPTION:
 | |
|         Finds the remainder of the division of two Oracle numbers.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           divide by zero errorr
 | |
|  */
 | |
| 
 | |
| /*------------------------ OCINumberIntPower --------------------------------*/
 | |
| 
 | |
| sword OCINumberIntPower(    OCIError *err, const OCINumber *base,
 | |
|                             const sword exp, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberIntPower - OCINumber takes an arbitary base to an arbitary
 | |
|                              integer PoWeR
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         base (IN) - base of the exponentiation
 | |
|         exp (IN) - exponent to which the base is to be raised
 | |
|         result (OUT) - output of exponentiation
 | |
|    DESCRIPTION:
 | |
|         Takes an arbitary base to an arbitary integer power.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberShift ---------------------------------*/
 | |
| 
 | |
| sword OCINumberShift(    OCIError *err, const OCINumber *number,
 | |
|                             const sword nDig, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberShift - OCINumber multiplies by a power of 10.
 | |
| 
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - Oracle Number to be shifted.
 | |
|         nDig   (IN) - number of decimal places to shift.
 | |
|         result (OUT) - shift result.
 | |
|    DESCRIPTION:
 | |
|         Multiplies number by 10^NDig and sets product to the result.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberNeg --------------------------------*/
 | |
| 
 | |
| sword OCINumberNeg(    OCIError *err, const OCINumber *number,
 | |
|                        OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberNeg - OCINumber NEGate number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - number to be negated
 | |
|         result (OUT) - will contain negated value of 'number'
 | |
|    DESCRIPTION:
 | |
|         Negates an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*------------------------- OCINumberToText ---------------------------------*/
 | |
| 
 | |
| sword OCINumberToText(    OCIError *err, const OCINumber *number, 
 | |
|                           const oratext *fmt, ub4 fmt_length,
 | |
|                           const oratext *nls_params, ub4 nls_p_length,
 | |
|                           ub4 *buf_size, oratext *buf    );
 | |
| /*
 | |
|    NAME: OCINumberToText - OCINumber convert number TO String 
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - Oracle number to be converted
 | |
|         fmt (IN) - conversion format
 | |
|         fmt_length (IN) - length of the 'fmt' parameter
 | |
|         nls_params (IN) - nls format specification, if null string 
 | |
|                 i.e. (oratext *)0, then the default parameters for the 
 | |
|                 session is used
 | |
|         nls_p_length (IN) - length of the 'nls_params' parameter
 | |
|         buf_size (IN/OUT) - size of the buffer must be passed as input by
 | |
|                 the caller, this function will return the length of the 
 | |
|                 resulting string in bytes via this parameter. The length 
 | |
|                 does not include the terminating null ('\0').
 | |
|         buf (OUT) - buffer into which the converted string is placed. The
 | |
|                 resulting string is null terminated.
 | |
|    DESCRIPTION:
 | |
|         Converts the given number to a character string 
 | |
|         according to the specified format. Refer to "TO_NUMBER" conversion
 | |
|         function described in "Oracle SQL Language Reference Manual" for a
 | |
|         description of format and NLS parameters.
 | |
|         The converted number string is stored in the buffer 'buf', up to 
 | |
|         a max of '*buf_size' bytes. Length of the resulting string is
 | |
|         returned via 'buf_size'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'number' or 'buf' is null
 | |
|           buffer too small
 | |
|           invalid format
 | |
|           invalid nls format
 | |
|           number to text translation for the given format causes overflow
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberFromText ------------------------------*/
 | |
| 
 | |
| sword OCINumberFromText(    OCIError *err, const oratext *str, 
 | |
|                           ub4 str_length, const oratext *fmt, ub4 fmt_length, 
 | |
|                           const oratext *nls_params, ub4 nls_p_length, 
 | |
|                           OCINumber *number    );
 | |
| /*
 | |
|    NAME: OCINumberFromText - OCINumber convert String TO Number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         str (IN) - input string to be converted to Oracle number
 | |
|         str_length (IN) - size of the input string
 | |
|         fmt (IN) - conversion format
 | |
|         fmt_length (IN) - length of the 'fmt' parameter
 | |
|         nls_params (IN) - nls format specification, if null string 
 | |
|                 i.e. (oratext *)0, then the default parameters for the 
 | |
|                 session is used
 | |
|         nls_p_length (IN) - length of the 'nls_params' parameter
 | |
|         number (OUT) - given string converted to number
 | |
|    DESCRIPTION:
 | |
|         Converts the given string to a number
 | |
|         according to the specified format. Refer to "TO_NUMBER" conversion
 | |
|         function described in "Oracle SQL Language Reference Manual" for a
 | |
|         description of format and NLS parameters.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'number' or 'str' is null
 | |
|           'str_length' is 0
 | |
|           invalid format
 | |
|           invalid nls format
 | |
|           invalid input string
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberToInt ---------------------------------*/
 | |
| 
 | |
| #define OCI_NUMBER_UNSIGNED 0                        /* Unsigned type -- ubX */
 | |
| #define OCI_NUMBER_SIGNED   2                          /* Signed type -- sbX */
 | |
| 
 | |
| sword OCINumberToInt(    OCIError *err, const OCINumber *number,
 | |
|                          uword rsl_length, uword rsl_flag, void  *rsl    );
 | |
| /*
 | |
|    NAME: OCINumberToInt - OCINumber convert number TO Integer
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - number to be converted
 | |
|         rsl_length (IN) - size of the desired result
 | |
|         rsl_s_flag (IN) - flag denoting the desired sign of the output; valid 
 | |
|                 values are OCI_NUMBER_UNSIGNED, OCI_NUMBER_SIGNED
 | |
|         rsl (OUT) - pointer to space for the result
 | |
|    DESCRIPTION:
 | |
|         Native type conversion function.
 | |
|         Converts the given Oracle number into an xbx (e.g. ub2, ub4, sb2 etc.)
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'number' or 'rsl' is null
 | |
|           integer value of 'number' is too big -- overflow
 | |
|           integer value of 'number' is too small -- underflow
 | |
|           invalid sign flag value ('rsl_s_flag')
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCINumberFromInt ------------------------------*/
 | |
| 
 | |
| sword OCINumberFromInt(    OCIError *err, const void  *inum, uword inum_length,
 | |
|                          uword inum_s_flag, OCINumber *number    );
 | |
| /*
 | |
|    NAME: OCINumberFromInt - OCINumber convert Integer TO Number 
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         inum (IN) - pointer to the integer to be converted
 | |
|         inum_length (IN) - size of the integer
 | |
|         inum_s_flag (IN) - flag that designates the sign of the integer; valid 
 | |
|                 values are OCI_NUMBER_UNSIGNED, OCI_NUMBER_SIGNED
 | |
|         number (OUT) - given integer converted to Oracle number
 | |
|    DESCRIPTION:
 | |
|         Native type conversion function. Converts any Oracle standard
 | |
|         machine-native integer type (xbx) to an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'number' or 'inum' is null
 | |
|           integer too BIG -- the number is too large to fit into an Oracle
 | |
|                 number
 | |
|           invalid sign flag value ('inum_s_flag')
 | |
|  */
 | |
| 
 | |
| /*------------------------- OCINumberToReal ---------------------------------*/
 | |
| 
 | |
| sword OCINumberToReal(    OCIError *err, const OCINumber *number,
 | |
|                           uword rsl_length, void  *rsl    );
 | |
| /*
 | |
|    NAME: OCINumberToReal - OCINumber convert number TO Real
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - number to be converted
 | |
|         rsl_length (IN) - is the size of the desired result, 
 | |
|                 sizeof( float | double | long double)
 | |
|         rsl (OUT) - pointer to space for storing the result
 | |
|    DESCRIPTION:
 | |
|         Native type conversion function. Converts an Oracle number into a
 | |
|         machine-native real type. This function only converts numbers up to
 | |
|         LDBL_DIG, DBL_DIG, or FLT_DIG digits of precision and removes
 | |
|         trailing zeroes. The above constants are defined in float.h
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'number' or 'rsl' is null
 | |
|           'rsl_length' is 0
 | |
|  */
 | |
| 
 | |
| /*------------------------- OCINumberToRealArray ----------------------------*/
 | |
| 
 | |
| sword OCINumberToRealArray(  OCIError *err, const OCINumber **number,
 | |
|                              uword elems, uword rsl_length, void  *rsl    );
 | |
| /*
 | |
|    NAME: OCINumberToRealArray - OCINumber convert array of numbers TO Real
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - Pointer to array of number to be converted
 | |
|         elems (IN) - Upper bound of number array
 | |
|         rsl_length (IN) - is the size of the desired result,
 | |
|                                           sizeof( float | double | long double)
 | |
|         rsl (OUT) - pointer to array of space for storing the result
 | |
|    DESCRIPTION:
 | |
|         Native type conversion function. Converts an Oracle number into a
 | |
|         machine-native real type. This function only converts numbers up to
 | |
|         LDBL_DIG, DBL_DIG, or FLT_DIG digits of precision and removes
 | |
|         trailing zeroes. The above constants are defined in float.h
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'number' or 'rsl' is null
 | |
|           'rsl_length' is 0
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberFromReal ------------------------------*/
 | |
| 
 | |
| sword OCINumberFromReal(    OCIError *err, const void  *rnum,
 | |
|                             uword rnum_length, OCINumber *number    );
 | |
| /*
 | |
|    NAME: OCINumberFromReal - OCINumber convert Real TO Number 
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         rnum (IN) - pointer to the floating point number to be converted
 | |
|         rnum_length (IN) - size of the desired result, i.e.
 | |
|                 sizeof({float | double | long double})
 | |
|         number (OUT) - given float converted to Oracle number
 | |
|    DESCRIPTION:
 | |
|         Native type conversion function. Converts a machine-native floating
 | |
|         point type to an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'number' or 'rnum' is null
 | |
|           'rnum_length' is 0
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberCmp --------------------------------*/
 | |
| 
 | |
| sword OCINumberCmp(    OCIError *err, const OCINumber *number1, 
 | |
|                        const OCINumber *number2, sword *result    );
 | |
| /*
 | |
|    NAME: OCINumberCmp - OCINumber CoMPare numbers 
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number1, number2 (IN) - numbers to be compared
 | |
|         result (OUT) - 0 if equal, negative if number1 < number2, 
 | |
|                 positive if number1 > number2 
 | |
|    DESCRIPTION:
 | |
|         The function OCINumberCmp compares two numbers.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|             'number1' or 'number2' or 'result' is null 
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCINumberSign --------------------------------*/
 | |
| 
 | |
| sword OCINumberSign(    OCIError *err, const OCINumber *number,
 | |
|                         sword *result    );
 | |
| /*
 | |
|    NAME: OCINumberSign - OCINumber obtains SiGN of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - number whose sign is returned
 | |
|         result (OUT) - 0 if number == 0, -1 if number < 0, 
 | |
|                 1 if number > 0 
 | |
|    DESCRIPTION:
 | |
|         Obtains sign of an Oracle number
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|             'number' or 'result' is null
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCINumberIsZero ------------------------------*/
 | |
| 
 | |
| sword OCINumberIsZero(    OCIError *err, const OCINumber *number,
 | |
|                           boolean *result    );
 | |
| /*
 | |
|    NAME: OCINumberIsZero - OCINumber comparison with ZERo
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - numbers to be compared
 | |
|         result (OUT) - set to TRUE if equal to zero else FALSE
 | |
|    DESCRIPTION:
 | |
|         Test if the given number is equal to zero.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|             'number' or 'result' is null
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCINumberIsInt -------------------------------*/
 | |
| 
 | |
| sword OCINumberIsInt(    OCIError *err, const OCINumber *number,
 | |
|                           boolean *result    );
 | |
| /*
 | |
|    NAME: OCINumberIsInt - OCINumber Is Integer value.
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - number to be tested
 | |
|         result (OUT) - set to TRUE if integer value else FALSE
 | |
|    DESCRIPTION:
 | |
|         Test if the given number is an integer value.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|             'number' or 'result' is null
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberAssign --------------------------------*/
 | |
|  
 | |
| sword OCINumberAssign(    OCIError *err, const OCINumber *from,
 | |
|                           OCINumber *to    );
 | |
| /*
 | |
|    NAME: OCINumberAssign - OCINumber ASsiGn number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         from (IN) - number to be assigned
 | |
|         to (OUT) - number copied into
 | |
|    DESCRIPTION:
 | |
|         Assign number 'from' to 'to'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'from' or 'to' is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberAbs --------------------------------*/
 | |
| 
 | |
| sword OCINumberAbs(    OCIError *err, const OCINumber *number,
 | |
|                        OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberAbs - OCINumber compute ABSolute value
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - input number
 | |
|         result (OUT) - output which will contain the absolue value of the
 | |
|                 input number
 | |
|    DESCRIPTION:
 | |
|         Computes the absolute value of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCINumberCeil --------------------------------*/
 | |
| 
 | |
| sword OCINumberCeil(    OCIError *err, const OCINumber *number,
 | |
|                         OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberCeil - OCINumber compute the CEiL value of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - input number
 | |
|         result (OUT) - output which will contain the ceil value of the
 | |
|                 input number
 | |
|    DESCRIPTION:
 | |
|         Computes the ceil value of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCINumberFloor --------------------------------*/
 | |
| 
 | |
| sword OCINumberFloor(    OCIError *err, const OCINumber *number, 
 | |
|                          OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberFloor - OCINumber compute the FLooR value of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - input number
 | |
|         result (OUT) - output which will contain the floor value of the
 | |
|                 input number
 | |
|    DESCRIPTION:
 | |
|         Computes the floor value of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberSqrt -------------------------------*/
 | |
| 
 | |
| sword OCINumberSqrt(    OCIError *err, const OCINumber *number, 
 | |
|                        OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberSqrt - OCINumber compute the SQuare Root of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - input number
 | |
|         result (OUT) - output which will contain the square root of the
 | |
|                 input number
 | |
|    DESCRIPTION:
 | |
|         Computes the square root of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           'number' is negative
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCINumberTrunc --------------------------------*/
 | |
| 
 | |
| sword OCINumberTrunc(    OCIError *err, const OCINumber *number, 
 | |
|                          sword decplace, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberTrunc - OCINumber TRUncate an Oracle number at a 
 | |
|                           specified decimal place
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - input number
 | |
|         decplace (IN) - number of decimal digits to the right of the 
 | |
|                 decimal point to truncate at. Negative values are allowed.
 | |
|         result (OUT) - output of truncation
 | |
|    DESCRIPTION:
 | |
|         Truncate an Oracle number at a specified decimal place
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberPower ------------------------------*/
 | |
| 
 | |
| sword OCINumberPower(    OCIError *err, const OCINumber *base, 
 | |
|                          const OCINumber *number, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberPower - OCINumber takes an arbitary Base to an 
 | |
|                           arbitary Power
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         base (IN) - base of the exponentiation
 | |
|         number (IN) - exponent to which the base is to be raised
 | |
|         result (OUT) - output of exponentiation
 | |
|    DESCRIPTION:
 | |
|         Takes an arbitary base to an arbitary power.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCINumberRound --------------------------------*/
 | |
| 
 | |
| sword OCINumberRound(    OCIError *err, const OCINumber *number,
 | |
|                          sword decplace, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberRound - OCINumber ROUnds an Oracle number to a specified 
 | |
|                   decimal place
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - round this number and return result in 'result'
 | |
|         decplace (IN) - number of decimal digits to the right of the 
 | |
|                 decimal point to round to. Negative values are allowed.
 | |
|         result (OUT) - output of rounding
 | |
|    DESCRIPTION:
 | |
|         Rounds an Oracle number to a specified decimal place
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCINumberPrec ---------------------------------*/
 | |
| 
 | |
| sword OCINumberPrec(    OCIError *err, const OCINumber *number,
 | |
|                          sword nDigs, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberPrec - Rounds an Oracle number to a specified number of
 | |
|                          decimal digits.
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - number for which to set precision.
 | |
|         nDig   (IN) - number of decimal digits desired in the result.
 | |
|         result (OUT) - result.
 | |
|    DESCRIPTION:
 | |
|         Performs a floating point round with respect to the number
 | |
|         of digits.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberSin --------------------------------*/
 | |
| 
 | |
| sword OCINumberSin(    OCIError *err, const OCINumber *number,
 | |
|                        OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberSin - OCINumber takes the SINe of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the sine in radians
 | |
|         result (OUT) - result of the sine
 | |
|    DESCRIPTION:
 | |
|         Takes the sine in radians of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberArcSin --------------------------------*/
 | |
| 
 | |
| sword OCINumberArcSin(    OCIError *err, const OCINumber *number,
 | |
|                           OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberArcSin - OCINumber takes the Arc SINe of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the arc sine
 | |
|         result (OUT) - result of the arc sine in radians
 | |
|    DESCRIPTION:
 | |
|         Takes the arc sine in radians of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           'number' is < -1 or 'number' is > 1.
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberHypSin --------------------------------*/
 | |
| 
 | |
| sword OCINumberHypSin(    OCIError *err, const OCINumber *number, 
 | |
|                           OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberHypSin - OCINumber takes the SiNe Hyperbolic of an 
 | |
|                            Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the sine hyperbolic
 | |
|         result (OUT) - result of the sine hyperbolic
 | |
|    DESCRIPTION:
 | |
|         Takes the hyperbolic sine of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|    NOTES:
 | |
|         An Oracle number overflow causes an unpredictable result value.
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberCos --------------------------------*/
 | |
| 
 | |
| sword OCINumberCos(    OCIError *err, const OCINumber *number, 
 | |
|                        OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberCos - OCINumber takes the COSine of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the cosine in radians
 | |
|         result (OUT) - result of the cosine
 | |
|    DESCRIPTION:
 | |
|         Takes the cosine in radians of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberArcCos --------------------------------*/
 | |
| 
 | |
| sword OCINumberArcCos(    OCIError *err, const OCINumber *number, 
 | |
|                           OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberArcCos - OCINumber takes the Arc COSine of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the arc cosine
 | |
|         result (OUT) - result of the arc cosine in radians
 | |
|    DESCRIPTION:
 | |
|         Takes the arc cosine in radians of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           'number' is < -1 or 'number' is > 1.
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberHypCos --------------------------------*/
 | |
| 
 | |
| sword OCINumberHypCos(    OCIError *err, const OCINumber *number, 
 | |
|                           OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberHypCos - OCINumber takes the CoSine Hyperbolic of an 
 | |
|                            Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the cosine hyperbolic
 | |
|         result (OUT) - result of the cosine hyperbolic
 | |
|    DESCRIPTION:
 | |
|         Takes the hyperbolic cosine of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|    NOTES:
 | |
|         An Oracle number overflow causes an unpredictable result value.
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberTan --------------------------------*/
 | |
| 
 | |
| sword OCINumberTan(    OCIError *err, const OCINumber *number, 
 | |
|                        OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberTan - OCINumber takes the TANgent of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the tangent in radians
 | |
|         result (OUT) - result of the tangent
 | |
|    DESCRIPTION:
 | |
|         Takes the tangent in radians of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCINumberArcTan --------------------------------*/
 | |
| 
 | |
| sword OCINumberArcTan(    OCIError *err, const OCINumber *number, 
 | |
|                           OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberArcTan - OCINumber takes the Arc TANgent of an Oracle number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the arc tangent
 | |
|         result (OUT) - result of the arc tangent in radians
 | |
|    DESCRIPTION:
 | |
|         Takes the arc tangent in radians of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*------------------------ OCINumberArcTan2 ---------------------------------*/
 | |
| 
 | |
| sword OCINumberArcTan2(    OCIError *err, const OCINumber *number1, 
 | |
|                            const OCINumber *number2, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberArcTan2 - OCINumber takes the ATan2 of 2 Oracle numbers
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number1 (IN) - first argument of atan2(y,x) function which 
 | |
|                 corresponds to 'y' parameter in the function
 | |
|         number2 (IN) - second argument of atan2(y,x) function which 
 | |
|                 corresponds to 'x' parameter in the function
 | |
|         result (OUT) - result of the atan2() in radians
 | |
|    DESCRIPTION:
 | |
|         Takes the atan2(number1, number2).
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           'number2' is 0
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberHypTan -----------------------------*/
 | |
| 
 | |
| sword OCINumberHypTan(    OCIError *err, const OCINumber *number, 
 | |
|                           OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberHypTan - OCINumber takes the TaNgent Hyperbolic of an Oracle
 | |
|                            number
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - argument of the tangent hyperbolic
 | |
|         result (OUT) - result of the tangent hyperbolic
 | |
|    DESCRIPTION:
 | |
|         Takes the hyperbolic tangent of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|    NOTES:
 | |
|         An Oracle number overflow causes an unpredictable result value.
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCINumberExp ----------------------------------*/
 | |
| 
 | |
| sword OCINumberExp(    OCIError *err, const OCINumber *number, 
 | |
|                        OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberExp - OCINumber EXPonential
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - e raised to this Oracle number power
 | |
|         result (OUT) - output of exponentiation
 | |
|    DESCRIPTION:
 | |
|         Raises e to the specified Oracle number power
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberLn ---------------------------------*/
 | |
| 
 | |
| sword OCINumberLn(    OCIError *err, const OCINumber *number, 
 | |
|                       OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberLn - OCINumber Logarithm Natural
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         number (IN) - logarithm of this number is computed
 | |
|         result (OUT) - logarithm result
 | |
|    DESCRIPTION:
 | |
|         Takes the logarithm of the given Oracle number with respect
 | |
|         to the given base.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           'number' is <= 0
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCINumberLog --------------------------------*/
 | |
| 
 | |
| sword OCINumberLog(    OCIError *err, const OCINumber *base, 
 | |
|                        const OCINumber *number, OCINumber *result    );
 | |
| /*
 | |
|    NAME: OCINumberLog - OCINumber LOGarithm any base
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         base (IN) - base of the logarithm
 | |
|         number (IN) - opearnd
 | |
|         result (OUT) - logarithm result
 | |
|    DESCRIPTION:
 | |
|         Takes the logarithm with the specified base of an Oracle number.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the number arguments is null
 | |
|           'number' is <= 0
 | |
|           'base' is <= 0
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*                             ORACLE DATE TYPE                              */
 | |
| /*****************************************************************************/
 | |
|  
 | |
| struct OCITime
 | |
| {
 | |
|   ub1 OCITimeHH;                          /* hours; range is 0 <= hours <=23 */
 | |
|   ub1 OCITimeMI;                     /* minutes; range is 0 <= minutes <= 59 */
 | |
|   ub1 OCITimeSS;                     /* seconds; range is 0 <= seconds <= 59 */
 | |
| };
 | |
| typedef struct OCITime OCITime;
 | |
| 
 | |
| /* 
 | |
|  * OCITime - OCI TiMe portion of date
 | |
|  *
 | |
|  * This structure should be treated as an opaque structure as the format
 | |
|  * of this structure may change. Use OCIDateGetTime/OCIDateSetTime 
 | |
|  * to manipulate time portion of OCIDate.
 | |
|  */
 | |
| 
 | |
| struct OCIDate
 | |
| {
 | |
|   sb2 OCIDateYYYY;         /* gregorian year; range is -4712 <= year <= 9999 */
 | |
|   ub1 OCIDateMM;                          /* month; range is 1 <= month < 12 */
 | |
|   ub1 OCIDateDD;                             /* day; range is 1 <= day <= 31 */
 | |
|   OCITime OCIDateTime;                                               /* time */
 | |
| };
 | |
| typedef struct OCIDate OCIDate;
 | |
| 
 | |
| /* 
 | |
|  * OCIDate - OCI oracle Date representation in C
 | |
|  *
 | |
|  * OCIDate represents the C mapping of Oracle date.
 | |
|  *
 | |
|  * This structure should be treated as an opaque structure as the format
 | |
|  * of this structure may change. Use OCIDateGetDate/OCIDateSetDate
 | |
|  * to access/initialize OCIDate.
 | |
|  *
 | |
|  * For binding variables of type OCIDate in OCI calls (OCIBindByName(),
 | |
|  * OCIBindByPos(), and OCIDefineByPos()) use the type code SQLT_ODT.
 | |
|  */
 | |
| 
 | |
| /*
 | |
|    EXAMPLE 
 | |
| 
 | |
|    The following example shows how to manipulate an attribute of type 
 | |
|    oracle date.
 | |
|   
 | |
|      #define FMT "Month dd, YYYY, HH:MI A.M."
 | |
|      #define LANG "American"
 | |
| 
 | |
|      struct person
 | |
|      {
 | |
|        OCIDate start_date;
 | |
|      };
 | |
|      typedef struct person person;
 | |
| 
 | |
|      OCIError *err;
 | |
|      person *joe;
 | |
|      sword status;                                           /o error status o/
 | |
|      
 | |
|      /o See oci.h for an example of how to initialize OCIError.
 | |
|       o For this example, assume the OCIEnv and OCIError has been
 | |
|       o initialized.
 | |
|       o/
 | |
| 
 | |
|      /o Pin joe person object in the object cache. See ori.h
 | |
|       o for an example on pinning objects. For this example, assume that
 | |
|       o joe is pointing to the pinned object.
 | |
|       o/
 | |
| 
 | |
|      /o set the start date of joe o/
 | |
|      OCIDateSetTime(&joe->start_date, 8, 0, 0);
 | |
|      OCIDateSetDate(&joe->start_date, 1990, 10, 5); 
 | |
| 
 | |
|      /o check if the date is valid o/
 | |
|      uword invalid;
 | |
|      if (OCIDateCheck(err, &joe->start_date, &invalid) != OCI_SUCCESS)
 | |
|        /o error handling code o/
 | |
|      if (invalid)
 | |
|        /o error handling code o/
 | |
| 
 | |
|      /o convert date for display purposes o/
 | |
|      char str[100];
 | |
|      ub4 strlen = sizeof(str);
 | |
|      if (OCIDateToText(err, &joe->start_date, FMT, sizeof(FMT)-1, LANG,
 | |
|                 sizeof(LANG)-1, &strlen, str) != OCI_SUCCESS)
 | |
|        /o error handling code o/
 | |
| 
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateGetTime --------------------------------*/
 | |
| /* void OCIDateGetTime(/o_ const OCIDate *date, ub1 *hour, ub1 *min, 
 | |
|                            ub1 *sec _o/); */
 | |
| #define OCIDateGetTime(date, hour, min, sec) \
 | |
|   { \
 | |
|      *hour = (date)->OCIDateTime.OCITimeHH; \
 | |
|      *min = (date)->OCIDateTime.OCITimeMI; \
 | |
|      *sec = (date)->OCIDateTime.OCITimeSS; \
 | |
|   }
 | |
| /*
 | |
|    NAME: OCIDateGetTime - OCIDate Get Time portion of date
 | |
|    PARAMETERS:
 | |
|         date (IN) - Oracle date whose time data is retrieved
 | |
|         hour (OUT) - hour value returned
 | |
|         min (OUT) - minute value returned
 | |
|         sec (OUT) - second value returned
 | |
|    DESCRIPTION:
 | |
|         Return time inforamtion stored in the given date. The time
 | |
|         information returned is: hour, minute and seconds.
 | |
|    RETURNS:
 | |
|         NONE
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateGetDate --------------------------------*/
 | |
| /* void OCIDateGetDate(/o_ const OCIDate *date, sb2 *year, ub1 *month, 
 | |
|                            ub1 *day _o/); */
 | |
| #define OCIDateGetDate(date, year, month, day) \
 | |
|   { \
 | |
|      *year = (date)->OCIDateYYYY; \
 | |
|      *month = (date)->OCIDateMM; \
 | |
|      *day = (date)->OCIDateDD; \
 | |
|   }
 | |
| /*
 | |
|    NAME: OCIDateGetDate - OCIDate Get Date (year, month, day) portion of date
 | |
|    PARAMETERS:
 | |
|         date (IN) - Oracle date whose year, month, day data is retrieved
 | |
|         year (OUT) - year value returned
 | |
|         month (OUT) - month value returned
 | |
|         day (OUT) - day value returned
 | |
|    DESCRIPTION:
 | |
|         Return year, month, day inforamtion stored in the given date.
 | |
|    RETURNS:
 | |
|         NONE
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateSetTime --------------------------------*/
 | |
| /* void OCIDateSetTime(/o_ OCIDate *date, ub1 hour, ub1 min, 
 | |
|                            ub1 sec _o/); */
 | |
| #define OCIDateSetTime(date, hour, min, sec) \
 | |
|   { \
 | |
|      (date)->OCIDateTime.OCITimeHH = hour; \
 | |
|      (date)->OCIDateTime.OCITimeMI = min; \
 | |
|      (date)->OCIDateTime.OCITimeSS = sec; \
 | |
|   }
 | |
| /*
 | |
|    NAME: OCIDateSetTime - OCIDate Set Time portion of date
 | |
|    PARAMETERS:
 | |
|         date (OUT) - Oracle date whose time data is set
 | |
|         hour (IN) - hour value to be set 
 | |
|         min (IN) - minute value to be set
 | |
|         sec (IN) - second value to be set
 | |
|    DESCRIPTION:
 | |
|         Set the date with the given time inforamtion.
 | |
|    RETURNS:
 | |
|         NONE
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateSetDate --------------------------------*/
 | |
| /* void OCIDateSetDate(/o_ OCIDate *date, sb2 year, ub1 month, ub1 day _o/); */
 | |
| #define OCIDateSetDate(date, year, month, day) \
 | |
|   { \
 | |
|      (date)->OCIDateYYYY = year; \
 | |
|      (date)->OCIDateMM = month; \
 | |
|      (date)->OCIDateDD = day; \
 | |
|   }
 | |
| /*
 | |
|    NAME: OCIDateSetDate - OCIDate Set Date (year, month, day) portion of date
 | |
|    PARAMETERS:
 | |
|         date (IN) - Oracle date whose year, month, day data is set
 | |
|         year (OUT) - year value to be set
 | |
|         month (OUT) - month value to be set
 | |
|         day (OUT) - day value to be set
 | |
|    DESCRIPTION:
 | |
|         Set the date with the given year, month, day inforamtion.
 | |
|    RETURNS:
 | |
|         NONE
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateAssign ---------------------------------*/
 | |
| 
 | |
| sword OCIDateAssign(    OCIError *err, const OCIDate *from, 
 | |
|                         OCIDate *to    );
 | |
| /*
 | |
|    NAME: OCIDateAssign - OCIDate Assignment
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         from (IN) - date to be assigned
 | |
|         to (OUT) - lhs of assignment
 | |
|    DESCRIPTION:
 | |
|         Performs date assignment.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateToText ---------------------------------*/
 | |
| 
 | |
| sword OCIDateToText(    OCIError *err, const OCIDate *date, 
 | |
|                         const oratext *fmt, ub1 fmt_length, 
 | |
|                         const oratext *lang_name, ub4 lang_length, 
 | |
|                         ub4 *buf_size, oratext *buf    );
 | |
| /*
 | |
|    NAME: OCIDateToText - OCIDate convert date TO String 
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date (IN) - Oracle date to be converted
 | |
|         fmt (IN) - conversion format, if null string pointer (oratext*)0, then
 | |
|                 the date is converted to a character string in the
 | |
|                 date format "DD-MON-YY".
 | |
|         fmt_length (IN) - length of the 'fmt' parameter
 | |
|         lang_name (IN) - specifies the language in which the names and 
 | |
|                 abbreviations of months and days are returned;
 | |
|                 default language of session is used if 'lang_name' 
 | |
|                 is null i.e. (oratext *)0
 | |
|         lang_length (IN) - length of the 'nls_params' parameter
 | |
|         buf_size (IN/OUT) - size of the buffer; size of the resulting string
 | |
|                 is returned via this parameter
 | |
|         buf (OUT) - buffer into which the converted string is placed
 | |
|    DESCRIPTION:
 | |
|         Converts the given date to a string according to the specified format.
 | |
|         Refer to "TO_DATE" conversion function described in
 | |
|         "Oracle SQL Language Reference Manual" for a description of format
 | |
|         and NLS arguments. The converted null-terminated date string is
 | |
|         stored in the buffer 'buf'.
 | |
|  
 | |
|         An error is reported upon overflow, e.g. trying to convert a number
 | |
|         of value 10 using format '9' causes an overflow.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           buffer too small
 | |
|           invalid format
 | |
|           unknown language
 | |
|           overflow error
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCIDateFromText ------------------------------*/
 | |
| 
 | |
| sword OCIDateFromText(    OCIError *err, const oratext *date_str, 
 | |
|                         ub4 d_str_length, const oratext *fmt, ub1 fmt_length, 
 | |
|                         const oratext *lang_name, ub4 lang_length, 
 | |
|                         OCIDate *date    );
 | |
| /*
 | |
|    NAME: OCIDateFromText - OCIDate convert String TO Date
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date_str (IN) - input string to be converted to Oracle date
 | |
|         d_str_length (IN) - size of the input string, if the length is -1
 | |
|                 then 'date_str' is treated as a null terminated  string
 | |
|         fmt (IN) - conversion format; if 'fmt' is a null pointer, then
 | |
|                 the string is expected to be in 'DD-MON-YY' format.
 | |
|         fmt_length (IN) - length of the 'fmt' parameter
 | |
|         lang_name (IN) - language in which the names and abbreviations of
 | |
|                 days and months are specified, if null i.e. (oratext *)0,
 | |
|                 the default language of session is used, 
 | |
|         lang_length (IN) - length of the 'lang_name' parameter
 | |
|         date (OUT) - given string converted to date
 | |
|    DESCRIPTION:
 | |
|         Converts the given string to Oracle date
 | |
|         according to the specified format. Refer to "TO_DATE" conversion
 | |
|         function described in "Oracle SQL Language Reference Manual" for a
 | |
|         description of format.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invalid format
 | |
|           unknown language
 | |
|           invalid input string
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCIDateCompare ------------------------------*/
 | |
| 
 | |
| sword OCIDateCompare(    OCIError *err, const OCIDate *date1, 
 | |
|                      const OCIDate *date2, sword *result    );
 | |
| /*
 | |
|    NAME: OCIDateCompare - OCIDate CoMPare dates
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date1, date2 (IN) - dates to be compared
 | |
|         result (OUT) - comparison result, 0 if equal, -1 if date1 < date2, 
 | |
|                 1 if date1 > date2
 | |
|    DESCRIPTION:
 | |
|         The function OCIDateCompare compares two dates. It returns -1 if date1 
 | |
|         is smaller than date2, 0 if they are equal, and 1 if date1 is greater 
 | |
|         than date2.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invalid date
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*------------------------- OCIDateAddMonths --------------------------------*/
 | |
| 
 | |
| sword OCIDateAddMonths(    OCIError *err, const OCIDate *date, sb4 num_months,
 | |
|                            OCIDate *result    );
 | |
| /*
 | |
|    NAME: OCIDateAddMonths - OCIDate ADd or subtract Months
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date (IN) - 'num_months' added or subtracted from 'date'
 | |
|         num_months (IN) - number of months to be added or subtracted 
 | |
|                 (a negative value will be subtracted)
 | |
|         result (IN/OUT) - result of adding or subtracting to 'date'
 | |
|    DESCRIPTION:
 | |
|         The function OCIDateAddDays adds or subtracts num_months from the 
 | |
|         date 'date'.
 | |
|           If the input 'date' is the last day of a month, then 
 | |
|         appropriate adjustments are made to ensure that the output date is 
 | |
|         also the last day of the month. For example, Feb. 28 + 1 month =
 | |
|         March 31, and November 30 - 3 months = August 31. Otherwise the
 | |
|         'result' date has the same day component as 'date'. 
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invalid date
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateAddDays --------------------------------*/
 | |
| 
 | |
| sword OCIDateAddDays(    OCIError *err, const OCIDate *date, sb4 num_days,
 | |
|                          OCIDate *result    );
 | |
| /*
 | |
|    NAME: OCIDateAddDays - OCIDate ADd or subtract Days
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date (IN) - 'num_days' added or subtracted from 'date'
 | |
|         num_days (IN) - number of days to be added or subtracted 
 | |
|                 (a negative value will be subtracted)
 | |
|         result (IN/OUT) - result of adding or subtracting to 'date'
 | |
|    DESCRIPTION:
 | |
|         The function OCIDateAddDays adds or subtracts num_days from the 
 | |
|         date 'date'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invalid date
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateLastDay --------------------------------*/
 | |
| 
 | |
| sword OCIDateLastDay(    OCIError *err, const OCIDate *date, 
 | |
|                          OCIDate *last_day    );
 | |
| /*
 | |
|    NAME: OCIDateLastDay - OCIDate get date of the LaST day of the month
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date (IN) - input date
 | |
|         last_day (OUT) - last day of the month in date 'date'
 | |
|    DESCRIPTION:
 | |
|         The function OCIDateLastDay returns the date of the last day of the
 | |
|         month in date 'date'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invalid date
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*----------------------- OCIDateDaysBetween --------------------------------*/
 | |
| 
 | |
| sword OCIDateDaysBetween(    OCIError *err, const OCIDate *date1, 
 | |
|                              const OCIDate *date2, sb4 *num_days    );
 | |
| /*
 | |
|    NAME: OCIDateDaysBetween - OCIDate get number of days BeTWeen two dates
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date1, date2 (IN) - input dates
 | |
|         num_days (OUT) - number of days between date1 and date2
 | |
|    DESCRIPTION:
 | |
|         The function OCIDateDaysBetween returns the number of days between 
 | |
|         date1 and date2. The time is ignored in this computation.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invalid date
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*------------------------ OCIDateZoneToZone --------------------------------*/
 | |
| 
 | |
| sword OCIDateZoneToZone(    OCIError *err, const OCIDate *date1,
 | |
|                             const oratext *zon1,
 | |
|                             ub4 zon1_length, const oratext *zon2, 
 | |
|                             ub4 zon2_length, OCIDate *date2    );
 | |
| /*
 | |
|    NAME: OCIDateZoneToZone - OCIDate convert date from one Zone TO another Zone
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date1 (IN) - date to be converted
 | |
|         zon1 (IN) - zone of input date
 | |
|         zon1_length (IN) - length in bytes of string 'zon1'
 | |
|         zon2 (IN) - zone to be converted to
 | |
|         zon2_length (IN) - length in bytes of string 'zon2'
 | |
|         date2 (OUT) - converted date (in 'zon2')
 | |
|    DESCRIPTION:
 | |
|         Converts date from one time zone to another. Given date 'date1' 
 | |
|         in time zone 'zon1' returns date 'date2' in time zone 'zon2'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invlid date
 | |
|           invald input time zone
 | |
|           invald output time zone
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateNextDay --------------------------------*/
 | |
| 
 | |
| sword OCIDateNextDay(    OCIError *err, const OCIDate *date, 
 | |
|                          const oratext *day_p, ub4 day_length, 
 | |
|                          OCIDate *next_day    );
 | |
| /*
 | |
|    NAME: OCIDateNextDay - OCIDate get date of Next DaY
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date (IN) - returned date should be later than this date
 | |
|         day (IN) - first day of week named by this is returned
 | |
|         day_length (IN) - length in bytes of string 'day'
 | |
|         next_day (OUT) - first day of the week named by 'day' later than 'date'
 | |
|    DESCRIPTION:
 | |
|         Returns the date of the first day of the
 | |
|         week named by 'day' that is later than date 'date'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           invalid date
 | |
|           invalid day
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCIDateCheck --------------------------------*/
 | |
| 
 | |
| /* Listing of error bits used by OCIDateCheck() */
 | |
| #define OCI_DATE_INVALID_DAY            0x1                       /* Bad DAy */
 | |
| #define OCI_DATE_DAY_BELOW_VALID        0x2   /* Bad DAy Low/high bit (1=low)*/
 | |
| #define OCI_DATE_INVALID_MONTH          0x4                     /* Bad MOnth */
 | |
| #define OCI_DATE_MONTH_BELOW_VALID      0x8 /* Bad MOnth Low/high bit (1=low)*/
 | |
| #define OCI_DATE_INVALID_YEAR           0x10                     /* Bad YeaR */
 | |
| #define OCI_DATE_YEAR_BELOW_VALID       0x20 /* Bad YeaR Low/high bit (1=low)*/
 | |
| #define OCI_DATE_INVALID_HOUR           0x40                     /* Bad HouR */
 | |
| #define OCI_DATE_HOUR_BELOW_VALID       0x80 /* Bad HouR Low/high bit (1=low)*/
 | |
| #define OCI_DATE_INVALID_MINUTE         0x100                  /* Bad MiNute */
 | |
| #define OCI_DATE_MINUTE_BELOW_VALID     0x200
 | |
|                                            /* Bad MiNute Low/high bit (1=low)*/
 | |
| #define OCI_DATE_INVALID_SECOND         0x400                  /* Bad SeCond */
 | |
| #define OCI_DATE_SECOND_BELOW_VALID     0x800
 | |
|                                            /* bad second Low/high bit (1=low)*/
 | |
| #define OCI_DATE_DAY_MISSING_FROM_1582  0x1000
 | |
|                                   /* Day is one of those "missing" from 1582 */
 | |
| #define OCI_DATE_YEAR_ZERO              0x2000    /* Year may not equal zero */
 | |
| #define OCI_DATE_INVALID_FORMAT         0x8000      /* Bad date format input */
 | |
| 
 | |
| sword OCIDateCheck(    OCIError *err, const OCIDate *date, uword *valid    );
 | |
| /*
 | |
|    NAME: OCIDateCheck - OCIDate CHecK if the given date is valid
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         date (IN) - date to be checked
 | |
|         valid (OUT) -  returns zero for a valid date, otherwise 
 | |
|                 the ORed combination of all error bits specified below:
 | |
|   
 | |
|    Macro name                   Bit number      Error
 | |
|    ----------                   ----------      -----
 | |
|    OCI_DATE_INVALID_DAY         0x1             Bad day
 | |
|    OCI_DATE_DAY_BELOW_VALID     0x2             Bad DAy Low/high bit (1=low)
 | |
|    OCI_DATE_INVALID_MONTH       0x4             Bad MOnth
 | |
|    OCI_DATE_MONTH_BELOW_VALID   0x8             Bad MOnth Low/high bit (1=low)
 | |
|    OCI_DATE_INVALID_YEAR        0x10            Bad YeaR
 | |
|    OCI_DATE_YEAR_BELOW_VALID    0x20            Bad YeaR Low/high bit (1=low)
 | |
|    OCI_DATE_INVALID_HOUR        0x40            Bad HouR
 | |
|    OCI_DATE_HOUR_BELOW_VALID    0x80            Bad HouR Low/high bit (1=low)
 | |
|    OCI_DATE_INVALID_MINUTE      0x100           Bad MiNute
 | |
|    OCI_DATE_MINUTE_BELOW_VALID  0x200           Bad MiNute Low/high bit (1=low)
 | |
|    OCI_DATE_INVALID_SECOND      0x400           Bad SeCond
 | |
|    OCI_DATE_SECOND_BELOW_VALID  0x800           bad second Low/high bit (1=low)
 | |
|    OCI_DATE_DAY_MISSING_FROM_1582 0x1000        Day is one of those "missing"
 | |
|                                                 from 1582
 | |
|    OCI_DATE_YEAR_ZERO           0x2000          Year may not equal zero
 | |
|    OCI_DATE_INVALID_FORMAT      0x8000          Bad date format input
 | |
|   
 | |
|    So, for example, if the date passed in was 2/0/1990 25:61:10 in
 | |
|    (month/day/year hours:minutes:seconds format), the erroor returned
 | |
|    would be OCI_DATE_INVALID_DAY | OCI_DATE_DAY_BELOW_VALID |
 | |
|    OCI_DATE_INVALID_HOUR | OCI_DATE_INVALID_MINUTE
 | |
| 
 | |
|    DESCRIPTION:
 | |
|         Check if the given date is valid.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           'date' and 'valid' pointers are NULL pointers
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIDateSysDate --------------------------------*/
 | |
| 
 | |
| sword OCIDateSysDate(    OCIError *err, OCIDate *sys_date    );
 | |
| /*
 | |
|    NAME: OCIDateSysDate - OCIDate get current SYStem date and time
 | |
|    PARAMETERS:
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         sys_date (OUT) - current system date and time
 | |
|    DESCRIPTION:
 | |
|         Returns the current system date and time.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           <to be discovered>
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*                  FIXED-LENGTH STRING - CHAR (N)                           */
 | |
| /*****************************************************************************/
 | |
| 
 | |
| /*
 | |
|  * An ADT attribute declared as "x CHAR(n)" is mapped to "OCIString *x;".
 | |
|  * The representation of OCIString * is shown below.
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*                  VARIABLE-LENGTH STRING                                   */
 | |
| /*****************************************************************************/
 | |
| 
 | |
| /*
 | |
|  * The variable-length string is represented in C as a pointer to OCIString
 | |
|  * structure. The OCIString structure is opaque to the user. Functions are
 | |
|  * provided to allow the user to manipulate a variable-length string.
 | |
|  *     
 | |
|  * A variable-length string can be declared as:
 | |
|  *
 | |
|  * OCIString *vstr;
 | |
|  *
 | |
|  * For binding variables of type OCIString* in OCI calls (OCIBindByName(),
 | |
|  * OCIBindByPos() and OCIDefineByPos()) use the external type code SQLT_VST.
 | |
|  */
 | |
| typedef struct OCIString OCIString;
 | |
| 
 | |
| /*-------------------------- OCIStringAssign --------------------------------*/
 | |
|  
 | |
| sword OCIStringAssign(    OCIEnv *env, OCIError *err, const OCIString *rhs, 
 | |
|                           OCIString **lhs    );
 | |
| /*
 | |
|    NAME: OCIStringAssign - OCIString Assign String to String
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         rhs (IN) - RHS of the assignment, the type of rhs is also OCIString
 | |
|         lhs (IN/OUT) - LHS of the assignment
 | |
|    DESCRIPTION:
 | |
|         Assign 'rhs' string to 'lhs' string. The 'lhs' string may be
 | |
|         resized depending upon the size of the 'rhs'. The assigned string is
 | |
|         null-terminated. The 'length' field will not include the extra byte
 | |
|         needed for null termination.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           out of space error
 | |
|  */
 | |
|  
 | |
| /*---------------------- OCIStringAssignText --------------------------------*/
 | |
|  
 | |
| sword OCIStringAssignText(    OCIEnv *env, OCIError *err, const oratext *rhs, 
 | |
|                               ub4 rhs_len, OCIString **lhs    );
 | |
| /*
 | |
|    NAME: OCIStringAssignText - OCIString Assign Text string to String
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         rhs (IN) - RHS of the assignment, the type of rhs is a text string
 | |
|         rhs_len (IN) - length of the 'rhs' string
 | |
|         lhs (IN/OUT) - LHS of the assignment
 | |
|    DESCRIPTION:
 | |
|         Assign 'rhs' string to 'lhs' string. The 'lhs' string may be
 | |
|         resized depending upon the size of the 'rhs'. The assigned string is
 | |
|         null-terminated. The 'length' field will not include the extra byte
 | |
|         needed for null termination.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           out of space error
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCIStringResize --------------------------------*/
 | |
| 
 | |
| sword OCIStringResize(    OCIEnv *env, OCIError *err, ub4 new_size, 
 | |
|                           OCIString **str    );
 | |
| /*
 | |
|    NAME: OCIStringResize - OCIString ReSiZe string memory
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         new_size (IN) - new memory size of the string in bytes
 | |
|         str (IN/OUT) - allocated memory for the string is freed from the 
 | |
|                 OOCI heap
 | |
|    DESCRIPTION:
 | |
|         This function resizes the memory of the given variable-length string in
 | |
|         the object cache. The contents of the string are NOT preserved.
 | |
|         This function may allocate the string in a new memory region in
 | |
|         which case the original memory occupied by the given string will
 | |
|         be freed. If the input string is null (str == NULL), then this
 | |
|         function will allocate memory for the string.
 | |
|  
 | |
|         If the new_size is 0, then this function frees the memory occupied
 | |
|         by 'str' and a null pointer value is returned.
 | |
|  
 | |
|         NOTE: The caller must compute 'new_size' taking into account space
 | |
|         for the null character ('\0').
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           out of space error
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCIStringSize --------------------------------*/
 | |
| 
 | |
| ub4 OCIStringSize(    OCIEnv *env, const OCIString *vs    );
 | |
| /*
 | |
|    NAME: OCIStringSize - OCIString Get String siZe
 | |
|    PARAMETERS:
 | |
|         env(IN) - pointer to OCI environment handle
 | |
|         vs (IN) - string whose size is returned
 | |
|    DESCRIPTION:
 | |
|         Return the size of the given string.
 | |
|    RETURNS:
 | |
|         size of the string in bytes is returned
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCIStringPtr --------------------------------*/
 | |
| 
 | |
| oratext *OCIStringPtr(    OCIEnv *env, const OCIString *vs    );
 | |
| /*
 | |
|    NAME: OCIStringPtr - OCIString Get String Pointer
 | |
|    PARAMETERS:
 | |
|         env(IN) - pointer to OCI environment handle
 | |
|         vs (IN) - pointer to the text of this string is returned
 | |
|    DESCRIPTION:
 | |
|         Return the pointer to the text of the given string.
 | |
|    RETURNS:
 | |
|         pointer to the text of the string is returned
 | |
|  */
 | |
| 
 | |
| /*----------------------- OCIStringAllocSize --------------------------------*/
 | |
|  
 | |
| sword OCIStringAllocSize(    OCIEnv *env, OCIError *err, const OCIString *vs, 
 | |
|                              ub4 *allocsize    );
 | |
| /*
 | |
|    NAME: OCIStringAllocSize - OCIString get Allocated SiZe of string memory 
 | |
|                               in bytes
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         vs (IN) - string whose allocated size in bytes is returned
 | |
|         allocsize (OUT) - allocated size of string memory in bytes is returned
 | |
|    DESCRIPTION:
 | |
|         Return the allocated size of the string memory in bytes. The
 | |
|         allocated size is >= actual string size.
 | |
|    REQUIRES:
 | |
|         vs is a non-null pointer
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR on error
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*                       VARIABLE-LENGTH RAW                                 */
 | |
| /*****************************************************************************/
 | |
| 
 | |
| /*
 | |
|  * The variable-length raw is represented in C as a pointer to OCIRaw
 | |
|  * structure. The OCIRaw structure is opaque to the user. Functions are
 | |
|  * provided to allow the user to manipulate a variable-length raw.
 | |
|  *     
 | |
|  * A variable-length raw can be declared as:
 | |
|  *
 | |
|  * OCIRaw *raw;
 | |
|  *
 | |
|  * For binding variables of type OCIRaw* in OCI calls (OCIBindByName(),
 | |
|  * OCIBindByPos() and OCIDefineByPos()) use the external type code SQLT_LVB.
 | |
|  */
 | |
| typedef struct OCIRaw OCIRaw;
 | |
| 
 | |
| /*-------------------------- OCIRawAssignRaw --------------------------------*/
 | |
|  
 | |
| sword OCIRawAssignRaw(    OCIEnv *env, OCIError *err, const OCIRaw *rhs, 
 | |
|                           OCIRaw **lhs    );
 | |
| /*
 | |
|    NAME: OCIRawAssignRaw - OCIRaw Assign Raw (of type OCIRaw*) to
 | |
|                    Raw (of type OCIRaw*)
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         rhs (IN) - RHS of the assignment, the type of rhs is also OCIRaw
 | |
|         lhs (IN/OUT) - LHS of the assignment
 | |
|    DESCRIPTION:
 | |
|         Assign 'rhs' raw to 'lhs' raw. The 'lhs' raw may be
 | |
|         resized depending upon the size of the 'rhs'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           out of space error
 | |
|  */
 | |
|  
 | |
| /*------------------------ OCIRawAssignBytes --------------------------------*/
 | |
|  
 | |
| sword OCIRawAssignBytes(    OCIEnv *env, OCIError *err, const ub1 *rhs, 
 | |
|                             ub4 rhs_len, OCIRaw **lhs    );
 | |
| /*
 | |
|    NAME: OCIRawAssignBytes - OCIRaw Assign raw Bytes (of type ub1*) to Raw 
 | |
|                    (of type OCIRaw*)
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         rhs (IN) - RHS of the assignment, the type of rhs is ub1 *
 | |
|         rhs_len (IN) - length of the 'rhs' raw
 | |
|         lhs (IN/OUT) - LHS of the assignment
 | |
|    DESCRIPTION:
 | |
|         Assign 'rhs' raw to 'lhs' raw. The 'lhs' raw may be
 | |
|         resized depending upon the size of the 'rhs'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           out of space error
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCIRawResize ---------------------------------*/
 | |
|  
 | |
| sword OCIRawResize(    OCIEnv *env, OCIError *err, ub4 new_size, 
 | |
|                        OCIRaw **raw    );
 | |
| /*
 | |
|    NAME: OCIRawResize - OCIRaw ReSiZe memory of variable-length raw
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         new_size (IN) - new size of the raw data in bytes
 | |
|         raw (IN) - variable-length raw pointer; the raw is
 | |
|                 resized to 'new_size'
 | |
|    DESCRIPTION:
 | |
|         This function resizes the memory of the given variable-length raw in
 | |
|         the object cache. 
 | |
|         The previous contents of the raw are NOT preserved.
 | |
|         This function may allocate the raw in a new memory region in
 | |
|         which case the original memory occupied by the given raw will
 | |
|         be freed. If the input raw is null (raw == NULL), then this
 | |
|         function will allocate memory for the raw data.
 | |
|  
 | |
|         If the new_size is 0, then this function frees the memory occupied
 | |
|         by 'raw' and a null pointer value is returned.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           out of space error
 | |
|  */
 | |
| 
 | |
| /*------------------------------- OCIRawSize --------------------------------*/
 | |
| 
 | |
| ub4 OCIRawSize(    OCIEnv * env, const OCIRaw *raw    );
 | |
| /*
 | |
|    NAME: OCIRawSize - OCIRaw Get Raw siZe
 | |
|    PARAMETERS:
 | |
|         env (IN)  - pointer to OCI environment handle
 | |
|         raw (INT) - raw whose size is returned
 | |
|    DESCRIPTION:
 | |
|         Return the size of the given raw.
 | |
|    RETURNS:
 | |
|         size of the raw in bytes is returned
 | |
|  */
 | |
| 
 | |
| /*--------------------------------- OCIRawPtr -------------------------------*/
 | |
| ub1 *OCIRawPtr(    OCIEnv * env, const OCIRaw *raw    );
 | |
| /*
 | |
|    NAME: OCIRawPtr - OCIRaw Get Raw data Pointer
 | |
|    PARAMETERS:
 | |
|         env (IN) - pointer to OCI environment handle
 | |
|         raw (IN) - pointer to the data of this raw is returned
 | |
|    DESCRIPTION:
 | |
|         Return the pointer to the data of the given raw.
 | |
|    RETURNS:
 | |
|         pointer to the data of the raw is returned
 | |
|  */
 | |
| 
 | |
| /*------------------------------ OCIRawAllocSize ----------------------------*/
 | |
|  
 | |
| sword OCIRawAllocSize(    OCIEnv *env, OCIError *err, const OCIRaw *raw,
 | |
|                           ub4 *allocsize    );
 | |
| /*
 | |
|    NAME: OCIRawAllocSize - OCIRaw get Allocated SiZe of raw memory in bytes
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         raw (IN) - raw whose allocated size in bytes is returned
 | |
|         allocsize (OUT) - allocated size of raw memory in bytes is returned
 | |
|    DESCRIPTION:
 | |
|         Return the allocated size of the raw memory in bytes. The
 | |
|         allocated size is >= actual raw size.
 | |
|    REQUIRES:
 | |
|         raw is a non-null pointer
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR upon error
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*                     OBJECT REFERENCE OPERATIONS                           */
 | |
| /*****************************************************************************/
 | |
| 
 | |
| /* 
 | |
|  * See the definition of OCIRef in oro.h.
 | |
|  *
 | |
|  * For binding variables of type OCIRef* in OCI calls (OCIBindByName(),
 | |
|  * OCIBindByPos() and OCIDefineByPos()) use the code SQLT_REF.
 | |
|  * 
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCIRefClear ----------------------------------*/
 | |
| void OCIRefClear(    OCIEnv *env, OCIRef *ref    );
 | |
| /*
 | |
|    NAME: OCIRefClear - OCIRef CLeaR or nullify a ref
 | |
|    PARAMETERS:
 | |
|         env (IN)     - pointer to OCI environment handle
 | |
|         ref (IN/OUT) - ref to clear
 | |
|    DESCRIPTION:
 | |
|         Clear or nullify the given ref. A ref is considered to be a null ref
 | |
|         if it does not contain a valid OID (and thus doesn't point to an
 | |
|         object). Logically, a null ref is a dangling ref.
 | |
| 
 | |
|         Note that a null ref is still a valid SQL value and is not SQL-ly null.
 | |
|         It can be used as a valid non-null constant ref value for NOT NULL
 | |
|         column or attribute of a row in a table.
 | |
|         
 | |
|         If a null pointer value is passed as a ref,
 | |
|         then this function is a no-op.
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIRefAssign ----------------------------------*/
 | |
| sword OCIRefAssign(    OCIEnv *env, OCIError *err, const OCIRef *source, 
 | |
|                        OCIRef **target    );
 | |
| /*
 | |
|    NAME: OCIRefAssign - OCIRef CoPY a ref to another
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         source (IN) - ref to copy from
 | |
|         target (IN/OUT) - ref to copy to
 | |
|    DESCRIPTION:
 | |
|         Copy 'source' ref to 'target' ref; both then reference the same
 | |
|         object. If the target ref pointer is null (i.e. *target == NULL)
 | |
|         then the copy function will allocate memory for the target ref
 | |
|         in OOCI heap prior to the copy.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           1) out of memory
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCIRefIsEqual ----------------------------------*/
 | |
| boolean OCIRefIsEqual(    OCIEnv *env, const OCIRef *x, const OCIRef *y    );
 | |
| /*
 | |
|    NAME: OCIRefIsEqual - OCIRef compare two refs for EQUality
 | |
|    PARAMETERS:
 | |
|         env (IN) - pointer to OCI environment handle
 | |
|         x (IN)   - ref to compare
 | |
|         y (IN)   - ref to compare
 | |
|    DESCRIPTION:
 | |
|         Compare the given refs for equality.
 | |
|         Two refs are equal if and only if:
 | |
|           - they are both referencing the same persistent object, or
 | |
|           - they are both referencing the same transient object.
 | |
| 
 | |
|         NOTE THAT TWO NULL REFS ARE CONSIDERED NOT EQUAL BY THIS FUNCTION.
 | |
|    RETURNS:
 | |
|         TRUE if the two refs are equal
 | |
|         FALSE if the two refs are not equal, or X is NULL, or Y is NULL
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIRefIsNull ----------------------------------*/
 | |
| boolean OCIRefIsNull(    OCIEnv *env, const OCIRef *ref    );
 | |
| /*
 | |
|    NAME: OCIRefIsNull - OCIRef test if a ref is NULl
 | |
|    PARAMETERS:
 | |
|         env (IN) - pointer to OCI environment handle
 | |
|         ref (IN) - ref to test for null
 | |
|    DESCRIPTION:
 | |
|         Return TRUE if the given ref is null; otherwise, return FALSE.
 | |
|         A ref is null if and only if:
 | |
|         - it is supposed to be referencing a persistent object, but
 | |
|           its OID is null, or
 | |
|         - it is supposed to be referencing a transient object, but it is
 | |
|           currently not pointing to an object.
 | |
|         A ref is a dangling ref if the object that it points to does not
 | |
|         exist.
 | |
|    RETURNS:
 | |
|         TRUE if the given ref is NULL
 | |
|         FALSE if the given ref is not NULL
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCIRefHexSize ----------------------------------*/
 | |
| ub4 OCIRefHexSize(    OCIEnv *env, const OCIRef *ref    );
 | |
| /*
 | |
|    NAME: OCIRefHexSize - OCIRef Hexadecimal buffer SiZe in bytes
 | |
|    PARAMETERS:
 | |
|         env (IN) - pointer to OCI environment handle
 | |
|         ref (IN) - ref whose size in hexadecimal representation in bytes is
 | |
|                 returned
 | |
|    DESCRIPTION:
 | |
|         Return the size of the buffer in bytes required for the hexadecimal
 | |
|         representation of the ref. A buffer of at-least this size must be
 | |
|         passed to ref-to-hex (OCIRefToHex) conversion function.
 | |
|    RETURNS:
 | |
|         size of hexadecimal representation of ref
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCIRefFromHex ---------------------------------*/
 | |
| sword OCIRefFromHex(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc, 
 | |
|                         const oratext *hex, ub4 length, OCIRef **ref    );
 | |
| /*
 | |
|    NAME:
 | |
|         OCIRefFromHex - OCIRef convert a Hexadecimal string TO a Ref
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by
 | |
|                 calling OCIErrorGet().
 | |
|         svc (IN) - OCI service context handle; if the resulting ref is
 | |
|                 initialized with this service context
 | |
|         hex (IN) - hexadecimal string (that was produced by 'OCIRefToHex()"
 | |
|                 previously) to be convert into a ref
 | |
|         length (IN) - length of the hexadecimal string
 | |
|         ref (IN/OUT) - ref is initialized with the given value ('hex').
 | |
|                 If *ref is null, then space for the ref is allocated in the
 | |
|                 object cache, otherwise the memory occupied by the given ref
 | |
|                 is re-used.
 | |
|    DESCRIPTION:
 | |
|         Convert the given hexadecimal string into a ref. This function
 | |
|         ensures that the resulting ref is well formed. It does NOT ensure
 | |
|         that the object pointed to by the resulting ref exists or not.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCIRefToHex -----------------------------------*/
 | |
| sword OCIRefToHex(    OCIEnv *env, OCIError *err, const OCIRef *ref, 
 | |
|                       oratext *hex, ub4 *hex_length    );
 | |
| /*
 | |
|    NAME:
 | |
|         OCIRefToHex - OCIRef convert ref to a Hexadecimal string
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by
 | |
|                 calling OCIErrorGet().
 | |
|         ref (IN) - ref to be converted into a hexadecimal string; if the
 | |
|                 ref is a null ref (i.e. OCIRefIsNull(ref) == TRUE) then
 | |
|                 a zero hex_length value is returned
 | |
|         hex (OUT) - buffer that is large enough to contain the resulting
 | |
|                 hexadecimal string; the contents of the string is opaque
 | |
|                 to the caller
 | |
|         hex_length (IN/OUT) - on input specifies the size of the 'hex' buffer,
 | |
|                 on output specifies the actual size of the hexadecimal
 | |
|                 string being returned in 'hex'
 | |
|    DESCRIPTION:
 | |
|         Convert the given ref into a hexadecimal string, and return the length
 | |
|         of the string. The resulting string is opaque to the caller.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           the given buffer is not big enough to hold the resulting string
 | |
|  */
 | |
| 
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*                          COLLECTION FUNCTIONS                             */
 | |
| /*****************************************************************************/
 | |
| 
 | |
| /* 
 | |
|    The generic collection is represented by the type 'OCIColl'. The following
 | |
|    operations OCIColl*() are provided on a generic collection:
 | |
|      - get current size of collection
 | |
|      - get upper bound of collection
 | |
|      - get pointer to an element given its index
 | |
|      - set element at given index (assign element)
 | |
|      - append an element 
 | |
|      - trim the given number of elements from the end of the collection
 | |
|      - collection assignment
 | |
| 
 | |
|    The following iterator based scanning functions are also provided on a
 | |
|    generic collection. These functions make use of an iterator which is
 | |
|    defined to be of type OCIIter.
 | |
| 
 | |
|      - create an iterator for scanning collection
 | |
|      - destroy iterator
 | |
|      - reset iterator to the beginning of collection
 | |
|      - get pointer to current element pointed by iterator
 | |
|      - get pointer to next element
 | |
|      - get pointer to previous element
 | |
| 
 | |
|    The collections variable-length array (varray) and nested table
 | |
|    are sub-types of generic collection. This means that the OCIColl*() 
 | |
|    functions can also be used to manipulate varray and nested table.
 | |
| 
 | |
|    The varray is represented by OCIArray type and nested table by OCITable.
 | |
|    Besides OCIColl*() functions no additional functions are provided for
 | |
|    manipulating varrays. The OCIColl*() functions are a complete set of 
 | |
|    functions to manipulate varrays.
 | |
| 
 | |
|    Besides OCIColl*() functions, the following functions OCITable*() can be 
 | |
|    used to manipulate nested table. The OCITable*() functions operate on 
 | |
|    nested tables only and should not be used on a varray.
 | |
| 
 | |
|      - delete an element at index i. Note that the position
 | |
|        ordinals of the remaining elements of the table is not changed by the
 | |
|        delete operation. So delete creates "holes" in the table.
 | |
|      - check if an element exists at the given index i
 | |
|      - return the smallest value of i for which exists(i) is true
 | |
|      - return the largest value of i for which exists(i) is true
 | |
|      - return pointer to the smallest position j, greater than i, such that 
 | |
|        OCITableExists(j) is true
 | |
|      - return pointer to the largest position j, less than i, such that 
 | |
|        OCITableExists(j) is true
 | |
| 
 | |
|    For binding variables of type OCIColl* or OCITable* in OCI calls
 | |
|    (OCIBindByName(), OCIBindByPos() and OCIDefineByPos()) use the external
 | |
|    type code SQLT_NTY.
 | |
|  */
 | |
| 
 | |
| /* OCIColl - generic collection type */
 | |
| typedef struct OCIColl OCIColl;
 | |
| 
 | |
| /* OCIArray - varray collection type */
 | |
| typedef OCIColl OCIArray;
 | |
| 
 | |
| /* OCITable - nested table collection type */
 | |
| typedef OCIColl OCITable;
 | |
| 
 | |
| /* OCIIter - collection iterator */
 | |
| typedef struct OCIIter OCIIter;
 | |
| 
 | |
| /*----------------------------- OCICollSize ---------------------------------*/
 | |
| 
 | |
| sword OCICollSize( OCIEnv *env, OCIError *err, const OCIColl *coll, 
 | |
|                    sb4 *size );
 | |
| /*
 | |
|    NAME: OCICollSize - OCIColl return current SIZe of the given collection
 | |
|    PARAMETERS:
 | |
|         env(IN) - pointer to OCI environment handle
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         coll (IN) - collection whose number of elements is returned
 | |
|         size (OUT) - current number of elements in the collection
 | |
|    DESCRIPTION:
 | |
|           Returns the current number of elements in the given collection.
 | |
| 
 | |
|           For collections of type nested table wherein 'delete element'
 | |
|           operation is allowed, the count returned by OCICollSize() will
 | |
|           NOT be decremented upon deleting elements. For example:
 | |
| 
 | |
|             OCICollSize(...); 
 | |
|             // assume 'size' returned is equal to 5
 | |
|             OCITableDelete(...); // delete one element
 | |
|             OCICollSize(...);
 | |
|             // 'size' returned will still be 5
 | |
| 
 | |
|           To get the count minus the deleted elements use OCITableSize(). 
 | |
|           Continuing the above example,
 | |
| 
 | |
|             OCITableSize(...)
 | |
|             // 'size' returned will be equal to 4
 | |
| 
 | |
|           Note, a trim operation (OCICollTrim) will decrement the count 
 | |
|           by the number of trimmed elements. Continuing the above example,
 | |
| 
 | |
|             OCICollTrim(..,1..); // trim one element
 | |
|             OCICollSize(...);
 | |
|             // 'size' returned will be equal to 4
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           error during loading of collection into object cache
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*------------------------------ OCICollMax ---------------------------------*/
 | |
| 
 | |
| sb4 OCICollMax(    OCIEnv *env, const OCIColl *coll    );
 | |
| /*
 | |
|    NAME: OCICollMax - OCIColl return MAXimum size (upper-bound) of the
 | |
|                    given collection (in number of elements)
 | |
|    PARAMETERS:
 | |
|         env(IN) - pointer to OCI environment handle
 | |
|         coll (IN) - collection whose upper-bound in number of elements 
 | |
|                 is returned
 | |
|    DESCRIPTION:
 | |
|         Returns the max number of elements that the given collection can hold.
 | |
|         A value 0 indicates that the collection has no upper-bound.
 | |
|    REQUIRES:
 | |
|         coll must point to a valid collection descriptor
 | |
|    RETURNS:
 | |
|         upper-bound of the given collection
 | |
|  */
 | |
| 
 | |
| /*-------------------------- OCICollGetElem ---------------------------------*/
 | |
| 
 | |
| sword OCICollGetElem(    OCIEnv *env, OCIError *err, const OCIColl *coll, 
 | |
|                          sb4 index, boolean *exists, void  **elem, 
 | |
|                          void  **elemind    );
 | |
| /*
 | |
|    NAME: OCICollGetElem - OCIColl GET pointer to the element at the given index
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         coll (IN) - pointer to the element in this collection is returned
 | |
|         index (IN) - index of the element whose pointer is returned
 | |
|         exists (OUT) - set to FALSE if element at the specified index does 
 | |
|                 not exist else TRUE
 | |
|         elem (OUT) - address of the desired element is returned
 | |
|         elemind (OUT) [optional] - address of the null indicator information 
 | |
|                 is returned; if (elemind == NULL) then the null indicator
 | |
|                 information will NOT be returned
 | |
|    DESCRIPTION:
 | |
|         Get the address of the element at the given position. Optionally
 | |
|         this function also returns the address of the element's null indicator
 | |
|         information.
 | |
|  
 | |
|         The following table describes for each collection element type
 | |
|         what the corresponding element pointer type is. The element pointer
 | |
|         is returned via the 'elem' parameter of OCICollGetElem().
 | |
|  
 | |
|            Element Type                       *elem is set to
 | |
|         -----------------------               ---------------
 | |
|          Oracle Number (OCINumber)              OCINumber*
 | |
|          Date (OCIDate)                         OCIDate*
 | |
|          Variable-length string (OCIString*)    OCIString**
 | |
|          Variable-length raw (OCIRaw*)          OCIRaw**
 | |
|          object reference (OCIRef*)             OCIRef**
 | |
|          lob locator (OCILobLocator*)           OCILobLocator**
 | |
|          object type (e.g. person)              person*
 | |
|  
 | |
|         The element pointer returned by OCICollGetElem() is in a form
 | |
|         such that it can not only be used to access the
 | |
|         element data but also is in a form that can be used as the target
 | |
|         (i.e left-hand-side) of an assignment statement.
 | |
|  
 | |
|         For example, assume the user is iterating over the elements of
 | |
|         a collection whose element type is object reference (OCIRef*). A call
 | |
|         to OCICollGetElem() returns pointer to a reference handle
 | |
|         (i.e. OCIRef**). After getting, the pointer to the collection
 | |
|         element, the user may wish to modify it by assigning a new reference.
 | |
|         This can be accomplished via the ref assignment function shown below:
 | |
|  
 | |
|         sword OCIRefAssign( OCIEnv *env, OCIError *err, const OCIRef *source,
 | |
|                             OCIRef **target );
 | |
|  
 | |
|         Note that the 'target' parameter of OCIRefAssign() is of type
 | |
|         'OCIRef**'. Hence OCICollGetElem() returns 'OCIRef**'.
 | |
|         If '*target == NULL' a new ref will be allocated by OCIRefAssign()
 | |
|         and returned via the 'target' parameter.
 | |
|  
 | |
|         Similarly, if the collection element was of type string (OCIString*),
 | |
|         OCICollGetElem() returns pointer to string handle
 | |
|         (i.e. OCIString**). If a new string is assigned, via
 | |
|         OCIStringAssign() or OCIStringAssignText() the type of the target
 | |
|         must be 'OCIString **'.
 | |
|  
 | |
|         If the collection element is of type Oracle number, OCICollGetElem()
 | |
|         returns OCINumber*. The prototype of OCINumberAssign() is shown below:
 | |
|  
 | |
|         sword OCINumberAssign(OCIError *err, const OCINumber *from,
 | |
|                               OCINumber *to);
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*------------------------- OCICollGetElemArray -----------------------------*/
 | |
| 
 | |
| sword OCICollGetElemArray(  OCIEnv *env, OCIError *err, const OCIColl *coll, 
 | |
|                             sb4 index, boolean *exists, void  **elem, 
 | |
|                             void  **elemind, uword *nelems);
 | |
| /*
 | |
|    NAME: OCICollGetElemArray - OCIColl GET pointers to elements from given index
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         coll (IN) - pointers to the elements in this collection is returned
 | |
|         index (IN) - starting index of the element
 | |
|         exists (OUT) - set to FALSE if element at the specified index does 
 | |
|                 not exist else TRUE
 | |
|         elem (OUT) - address of the desired elements is returned
 | |
|         elemind (OUT) [optional] - address of the null indicators information 
 | |
|                 is returned; if (elemind == NULL) then the null indicator
 | |
|                 information will NOT be returned
 | |
|         nelems(IN/OUT) - Upper bound of elem and/or elemind array
 | |
|    DESCRIPTION:
 | |
|         Get the address of the elements from the given position. Optionally
 | |
|         this function also returns the address of the element's null indicator
 | |
|         information.
 | |
|  
 | |
|         The following table describes for each collection element type
 | |
|         what the corresponding element pointer type is. The element pointer
 | |
|         is returned via the 'elem' parameter of OCICollGetElem().
 | |
|  
 | |
|            Element Type                       *elem is set to
 | |
|         -----------------------               ---------------
 | |
|          Oracle Number (OCINumber)              OCINumber*
 | |
|          Date (OCIDate)                         OCIDate*
 | |
|          Variable-length string (OCIString*)    OCIString**
 | |
|          Variable-length raw (OCIRaw*)          OCIRaw**
 | |
|          object reference (OCIRef*)             OCIRef**
 | |
|          lob locator (OCILobLocator*)           OCILobLocator**
 | |
|          object type (e.g. person)              person*
 | |
|  
 | |
|         The element pointer returned by OCICollGetElem() is in a form
 | |
|         such that it can not only be used to access the
 | |
|         element data but also is in a form that can be used as the target
 | |
|         (i.e left-hand-side) of an assignment statement.
 | |
|  
 | |
|         For example, assume the user is iterating over the elements of
 | |
|         a collection whose element type is object reference (OCIRef*). A call
 | |
|         to OCICollGetElem() returns pointer to a reference handle
 | |
|         (i.e. OCIRef**). After getting, the pointer to the collection
 | |
|         element, the user may wish to modify it by assigning a new reference.
 | |
|         This can be accomplished via the ref assignment function shown below:
 | |
|  
 | |
|         sword OCIRefAssign( OCIEnv *env, OCIError *err, const OCIRef *source,
 | |
|                             OCIRef **target );
 | |
|  
 | |
|         Note that the 'target' parameter of OCIRefAssign() is of type
 | |
|         'OCIRef**'. Hence OCICollGetElem() returns 'OCIRef**'.
 | |
|         If '*target == NULL' a new ref will be allocated by OCIRefAssign()
 | |
|         and returned via the 'target' parameter.
 | |
|  
 | |
|         Similarly, if the collection element was of type string (OCIString*),
 | |
|         OCICollGetElem() returns pointer to string handle
 | |
|         (i.e. OCIString**). If a new string is assigned, via
 | |
|         OCIStringAssign() or OCIStringAssignText() the type of the target
 | |
|         must be 'OCIString **'.
 | |
|  
 | |
|         If the collection element is of type Oracle number, OCICollGetElem()
 | |
|         returns OCINumber*. The prototype of OCINumberAssign() is shown below:
 | |
|  
 | |
|         sword OCINumberAssign(OCIError *err, const OCINumber *from,
 | |
|                               OCINumber *to);
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*----------------------- OCICollAssignElem ---------------------------------*/
 | |
| 
 | |
| sword OCICollAssignElem(    OCIEnv *env, OCIError *err, sb4 index, 
 | |
|                             const void  *elem, 
 | |
|                             const void  *elemind, OCIColl *coll    );
 | |
| /*
 | |
|    NAME: OCICollAssignElem - OCIColl ASsign Element
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         index (IN) - index of the element whose is assigned to
 | |
|         elem (IN) - element which is assigned from (source element)
 | |
|         elemind (IN) [optional] - pointer to the element's null indicator 
 | |
|                 information; if (elemind == NULL) then the null indicator
 | |
|                 information of the assigned element will be set to non-null.
 | |
|         coll (IN/OUT) - collection to be updated
 | |
|    DESCRIPTION:
 | |
|         Assign the given element value 'elem' to the element at coll[index].
 | |
|         If the collection is of type nested table, the element at the given 
 | |
|         index may not exist (i.e. may have been deleted). In this case, the 
 | |
|         given element is inserted at index 'index'.
 | |
|         Otherwise, the element at index 'index' is updated with the value
 | |
|         of 'elem'.
 | |
|   
 | |
|         Note that the given element is deep-copied and 
 | |
|         'elem' is strictly an input parameter.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|           out of memory error
 | |
|           given index is out of bounds of the given collection
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCICollAssign ---------------------------------*/
 | |
| 
 | |
| sword OCICollAssign(    OCIEnv *env, OCIError *err, const OCIColl *rhs, 
 | |
|                         OCIColl *lhs    );
 | |
| /*
 | |
|    NAME: OCICollAssign - OCIColl ASsiGn collection
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         rhs (IN) - collection to be assigned from
 | |
|         lhs (OUT) - collection to be assigned to
 | |
|    DESCRIPTION:
 | |
|         Assign 'rhs' to 'lhs'. The 'lhs' collection may be decreased or 
 | |
|         increased depending upon the size of 'rhs'. If the 'lhs' contains 
 | |
|         any elements then the elements will be deleted prior to the 
 | |
|         assignment. This function performs a deep-copy. The memory for the 
 | |
|         elements comes from the object cache.
 | |
|  
 | |
|         An error is returned if the element types of the lhs and rhs 
 | |
|         collections do not match. Also, an error is returned if the 
 | |
|         upper-bound of the lhs collection is less than the current number of 
 | |
|         elements in the rhs collection.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|           out of memory error
 | |
|           type mis-match of lhs and rhs collections
 | |
|           upper-bound of lhs collection is less than the current number of 
 | |
|           elements in the rhs collection
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCICollAppend ---------------------------------*/
 | |
| 
 | |
| sword OCICollAppend(    OCIEnv *env, OCIError *err, const void  *elem, 
 | |
|                         const void  *elemind, OCIColl *coll    );
 | |
| /*
 | |
|    NAME: OCICollAppend - OCIColl APPend collection
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         elem (IN) - pointer to the element which is appended to the end
 | |
|                 of the given collection
 | |
|         elemind (IN) [optional] - pointer to the element's null indicator 
 | |
|                 information; if (elemind == NULL) then the null indicator
 | |
|                 information of the appended element will be set to non-null.
 | |
|         coll (IN/OUT) - updated collection
 | |
|    DESCRIPTION:
 | |
|         Append the given element to the end of the given collection. 
 | |
|         Appending an element is equivalent to:
 | |
|           - increasing the size of the collection by 1 element
 | |
|           - updating (deep-copying) the last element's data with the given 
 | |
|             element's data
 | |
|   
 | |
|         Note that the pointer to the given element 'elem' will not be saved 
 | |
|         by this function. So 'elem' is strictly an input parameter.
 | |
|         An error is returned if the current size of the collection
 | |
|         is equal to the max size (upper-bound) of the collection prior to 
 | |
|         appending the element.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|           out of memory error
 | |
|           current size of collection == max size of the collection
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCICollTrim ---------------------------------*/
 | |
| 
 | |
| sword OCICollTrim(    OCIEnv *env, OCIError *err, sb4 trim_num, 
 | |
|                       OCIColl *coll    );
 | |
| /*
 | |
|    NAME: OCICollTrim - OCIColl Trim elements from the end of the collection
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         trim_num (IN) - number of elements to trim
 | |
|         coll (IN/OUT) - 'trim_num' of elements are removed (freed) from the
 | |
|                 end of the collection
 | |
|    DESCRIPTION:
 | |
|         Trim the collection by the given number of elements. The elements are 
 | |
|         removed from the end of the collection.
 | |
|   
 | |
|         An error is returned if the 'trim_num' is greater than the current 
 | |
|         size of the collection.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|           'trim_num' is greater than the current size of the collection.
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCICollIsLocator ------------------------------*/
 | |
| 
 | |
| sword OCICollIsLocator(OCIEnv *env, OCIError *err, const OCIColl *coll,
 | |
|                        boolean *result );
 | |
| /*
 | |
| Name: OCICollIsLocator - OCIColl indicates whether a collection is locator
 | |
|                          based or not.
 | |
| Parameters:
 | |
|         env(IN) - pointer to OCI environment handle
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         coll (IN) - collection item.
 | |
|         result (OUT) - TRUE if the collection item is a locator, FALSE
 | |
|                        otherwise
 | |
| Description:
 | |
|         Returns TRUE in the result OUT parameter if the collection item is a
 | |
|         locator, otherwise returns FALSE.
 | |
| Returns:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
| */
 | |
| 
 | |
| /*---------------------------- OCIIterCreate --------------------------------*/
 | |
| 
 | |
| sword OCIIterCreate(    OCIEnv *env, OCIError *err, const OCIColl *coll, 
 | |
|                         OCIIter **itr    );
 | |
| /*
 | |
|    NAME: OCIIterCreate - OCIColl Create an ITerator to scan the collection
 | |
|                       elements
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         coll (IN) - collection which will be scanned; the different 
 | |
|                 collection types are varray and nested table
 | |
|         itr (OUT) - address to the allocated collection iterator is
 | |
|                 returned by this function
 | |
|    DESCRIPTION:
 | |
|         Create an iterator to scan the elements of the collection. The
 | |
|         iterator is created in the object cache. The iterator is initialized
 | |
|         to point to the beginning of the collection.
 | |
|   
 | |
|         If the next function (OCIIterNext) is called immediately 
 | |
|         after creating the iterator then the first element of the collection 
 | |
|         is returned. 
 | |
|         If the previous function (OCIIterPrev) is called immediately after 
 | |
|         creating the iterator then "at beginning of collection" error is 
 | |
|         returned.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|           out of memory error
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCIIterDelete ------------------------------*/
 | |
| 
 | |
| sword OCIIterDelete(    OCIEnv *env, OCIError *err, OCIIter **itr    );
 | |
| /*
 | |
|    NAME: OCIIterDelete - OCIColl Delete ITerator
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         itr (IN/OUT) - the allocated collection iterator is destroyed and
 | |
|                 the 'itr' is set to NULL prior to returning
 | |
|    DESCRIPTION:
 | |
|         Delete the iterator which was previously created by a call to 
 | |
|         OCIIterCreate.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|           to be discovered
 | |
|  */
 | |
| 
 | |
| /*----------------------------- OCIIterInit ---------------------------------*/
 | |
| 
 | |
| sword OCIIterInit(    OCIEnv *env, OCIError *err, const OCIColl *coll, 
 | |
|                       OCIIter *itr    );
 | |
| /*
 | |
|    NAME: OCIIterInit - OCIColl Initialize ITerator to scan the given 
 | |
|                    collection
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         coll (IN) - collection which will be scanned; the different 
 | |
|                 collection types are varray and nested table
 | |
|         itr (IN/OUT) - pointer to an allocated  collection iterator
 | |
|    DESCRIPTION:
 | |
|         Initializes the given iterator to point to the beginning of the 
 | |
|         given collection. This function can be used to:
 | |
|   
 | |
|         a. reset an iterator to point back to the beginning of the collection 
 | |
|         b. reuse an allocated iterator to scan a different collection
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*------------------------ OCIIterGetCurrent --------------------------------*/
 | |
| 
 | |
| sword OCIIterGetCurrent(    OCIEnv *env, OCIError *err, const OCIIter *itr, 
 | |
|                             void  **elem, void  **elemind    );
 | |
| /*
 | |
|    NAME: OCIIterGetCurrent - OCIColl Iterator based, get CURrent collection
 | |
|                     element
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         itr (IN) - iterator which points to the current element
 | |
|         elem (OUT) - address of the element pointed by the iterator is returned
 | |
|         elemind (OUT) [optional] - address of the element's null indicator 
 | |
|                 information is returned; if (elemind == NULL) then the null 
 | |
|                 indicator information will NOT be returned
 | |
|    DESCRIPTION:
 | |
|         Returns pointer to the current element and its corresponding null
 | |
|         information.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*------------------------------ OCIIterNext --------------------------------*/
 | |
| 
 | |
| sword OCIIterNext(    OCIEnv *env, OCIError *err, OCIIter *itr, 
 | |
|                       void  **elem, void  **elemind, boolean *eoc    );
 | |
| /*
 | |
|    NAME: OCIIterNext - OCIColl Iterator based, get NeXT collection element
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         itr (IN/OUT) - iterator is updated to point to the next element
 | |
|         elem (OUT) - after updating the iterator to point to the next element,
 | |
|                 address of the element is returned
 | |
|         elemind (OUT) [optional] - address of the element's null indicator 
 | |
|                 information is returned; if (elemind == NULL) then the null 
 | |
|                 indicator information will NOT be returned
 | |
|         eoc (OUT) - TRUE if iterator is at End Of Collection (i.e. next
 | |
|                 element does not exist) else FALSE
 | |
|    DESCRIPTION:
 | |
|         Returns pointer to the next element and its corresponding null
 | |
|         information. The iterator is updated to point to the next element.
 | |
|   
 | |
|         If the iterator is pointing to the last element of the collection
 | |
|         prior to executing this function, then calling this function will 
 | |
|         set eoc flag to TRUE. The iterator will be left unchanged in this
 | |
|         situation.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*------------------------------ OCIIterPrev --------------------------------*/
 | |
| 
 | |
| sword OCIIterPrev(    OCIEnv *env, OCIError *err, OCIIter *itr, 
 | |
|                       void  **elem, void  **elemind, boolean *boc    );
 | |
| /*
 | |
|    NAME: OCIIterPrev - OCIColl Iterator based, get PReVious collection element
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         itr (IN/OUT) - iterator is updated to point to the previous 
 | |
|                 element
 | |
|         elem (OUT) - after updating the iterator to point to the previous 
 | |
|                 element, address of the element is returned
 | |
|         elemind (OUT) [optional] - address of the element's null indicator 
 | |
|                 information is returned; if (elemind == NULL) then the null 
 | |
|                 indicator information will NOT be returned
 | |
|         boc (OUT) - TRUE if iterator is at Beginning Of Collection (i.e.
 | |
|                 previous element does not exist) else FALSE.
 | |
|    DESCRIPTION:
 | |
|         Returns pointer to the previous element and its corresponding null
 | |
|         information. The iterator is updated to point to the previous element.
 | |
|   
 | |
|         If the iterator is pointing to the first element of the collection
 | |
|         prior to executing this function, then calling this function will 
 | |
|         set 'boc' to TRUE. The iterator will be left unchanged in this 
 | |
|         situation.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************/
 | |
| /*           FUNCTIONS WHICH OPERATE ONLY ON NESTED TABLE OCITable*()        */
 | |
| /*****************************************************************************/
 | |
| 
 | |
| /*---------------------------- OCITableSize ---------------------------------*/
 | |
| 
 | |
| sword OCITableSize( OCIEnv *env, OCIError *err, const OCITable *tbl, 
 | |
|                     sb4 *size);
 | |
| /*
 | |
|    NAME: OCITableSize - OCITable return current SIZe of the given 
 | |
|                    nested table (not including deleted elements)
 | |
|    PARAMETERS:
 | |
|         env(IN) - pointer to OCI environment handle
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         tbl (IN) - nested table whose number of elements is returned
 | |
|         size (OUT) - current number of elements in the nested table. The count
 | |
|                 does not include deleted elements.
 | |
|    DESCRIPTION:
 | |
|         Returns the count of elements in the given nested table. 
 | |
| 
 | |
|         The count returned by OCITableSize() will be decremented upon 
 | |
|         deleting elements from the nested table. So, this count DOES NOT 
 | |
|         includes any "holes" created by deleting elements. 
 | |
|         For example:
 | |
| 
 | |
|             OCITableSize(...); 
 | |
|             // assume 'size' returned is equal to 5
 | |
|             OCITableDelete(...); // delete one element
 | |
|             OCITableSize(...);
 | |
|             // 'size' returned will be equal to 4
 | |
| 
 | |
|         To get the count plus the count of deleted elements use 
 | |
|         OCICollSize(). Continuing the above example,
 | |
| 
 | |
|             OCICollSize(...)
 | |
|             // 'size' returned will still be equal to 5
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           error during loading of nested table into object cache
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*---------------------- OCITableExists ---------------------------------*/
 | |
| 
 | |
| sword OCITableExists(    OCIEnv *env, OCIError *err, const OCITable *tbl,
 | |
|                              sb4 index, boolean *exists    );
 | |
| /*
 | |
|    NAME: OCITableExists - OCITable test whether element at the given index
 | |
|                     EXIsts
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         tbl (IN) - table in which the given index is checked
 | |
|         index (IN) - index of the element which is checked for existence
 | |
|         exists (OUT) - set to TRUE if element at given 'index' exists
 | |
|                 else set to FALSE
 | |
|    DESCRIPTION:
 | |
|         Test whether an element exists at the given 'index'.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCITableDelete -------------------------------*/
 | |
| 
 | |
| sword OCITableDelete(    OCIEnv *env, OCIError *err, sb4 index, 
 | |
|                       OCITable *tbl    );
 | |
| /*
 | |
|    NAME: OCITableDelete - OCITable DELete element at the specified index
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         index (IN) - index of the element which must be deleted
 | |
|         tbl (IN) - table whose element is deleted
 | |
|    DESCRIPTION:
 | |
|         Delete the element at the given 'index'. Note that the position
 | |
|         ordinals of the remaining elements of the table is not changed by the
 | |
|         delete operation. So delete creates "holes" in the table.
 | |
| 
 | |
|         An error is returned if the element at the specified 'index' has
 | |
|         been previously deleted.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           any of the input parameters is null
 | |
|           given index is not valid
 | |
|  */
 | |
| 
 | |
| /*--------------------------- OCITableFirst ---------------------------------*/
 | |
| 
 | |
| sword OCITableFirst(    OCIEnv *env, OCIError *err, const OCITable *tbl, 
 | |
|                         sb4 *index     );
 | |
| /*
 | |
|    NAME: OCITableFirst - OCITable return FirST index of table
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         tbl (IN) - table which is scanned
 | |
|         index (OUT) - first index of the element which exists in the given 
 | |
|                 table is returned
 | |
|    DESCRIPTION:
 | |
|         Return the first index of the element which exists in the given 
 | |
|         table. 
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           table is empty
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCITableLast ---------------------------------*/
 | |
| 
 | |
| sword OCITableLast(    OCIEnv *env, OCIError *err, const OCITable *tbl, 
 | |
|                        sb4 *index     );
 | |
| /*
 | |
|    NAME: OCITableFirst - OCITable return LaST index of table
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         tbl (IN) - table which is scanned
 | |
|         index (OUT) - last index of the element which exists in the given 
 | |
|                 table is returned
 | |
|    DESCRIPTION:
 | |
|         Return the last index of the element which exists in the given 
 | |
|         table. 
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           table is empty
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCITableNext ---------------------------------*/
 | |
| 
 | |
| sword OCITableNext(    OCIEnv *env, OCIError *err, sb4 index, 
 | |
|                        const OCITable *tbl, sb4 *next_index,
 | |
|                        boolean *exists    );
 | |
| /*
 | |
|    NAME: OCITableNext - OCITable return NeXT available index of table
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         index (IN) - starting at 'index' the index of the next element
 | |
|                 which exists is returned
 | |
|         tbl (IN) - table which is scanned
 | |
|         next_index (OUT) - index of the next element which exists 
 | |
|                 is returned
 | |
|         exists (OUT) - FALSE if no next index available else TRUE
 | |
|    DESCRIPTION:
 | |
|         Return the smallest position j, greater than 'index', such that 
 | |
|         exists(j) is TRUE.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           no next index available
 | |
|  */
 | |
| 
 | |
| /*---------------------------- OCITablePrev ---------------------------------*/
 | |
| 
 | |
| sword OCITablePrev(    OCIEnv *env, OCIError *err, sb4 index, 
 | |
|                        const OCITable *tbl, sb4 *prev_index,
 | |
|                        boolean *exists    );
 | |
| /*
 | |
|    NAME: OCITablePrev - OCITable return PReVious available index of table
 | |
|    PARAMETERS:
 | |
|         env (IN/OUT) - OCI environment handle initialized in object mode.
 | |
|         err (IN/OUT) - error handle. If there is an error, it is
 | |
|                 recorded in 'err' and this function returns OCI_ERROR.
 | |
|                 The error recorded in 'err' can be retrieved by calling
 | |
|                 OCIErrorGet().
 | |
|         index (IN) - starting at 'index' the index of the previous element
 | |
|                 which exists is returned
 | |
|         tbl (IN) - table which is scanned
 | |
|         prev_index (OUT) - index of the previous element which exists 
 | |
|                 is returned
 | |
|         exists (OUT) - FALSE if no next index available else TRUE
 | |
|    DESCRIPTION:
 | |
|         Return the largest position j, less than 'index', such that 
 | |
|         exists(j) is TRUE.
 | |
|    RETURNS:
 | |
|         OCI_SUCCESS if the function completes successfully.
 | |
|         OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
 | |
|         OCI_ERROR if
 | |
|           no previous index available
 | |
|  */
 | |
| 
 | |
| /*------------------------ OCINumberToLnx -----------------------------------*/
 | |
| /* void OCINumberToLnx(/o_ OCINumber *num _o/); */
 | |
| 
 | |
| #define OCINumberToLnx(num) ((lnxnum_t *)num)
 | |
| 
 | |
| /* 
 | |
|    NAME:   OCINumberToLnx
 | |
|    PARAMETERS:
 | |
|            num (IN) - OCINumber to convert ;
 | |
|    DESCRIPTION: 
 | |
|            Converts OCINumber to its internal lnx format 
 | |
|            This is not to be used in Public interfaces , but
 | |
|            has been provided due to special requirements from 
 | |
|            SQLPLUS development group as they require to call 
 | |
|            Core funtions directly . 
 | |
| */
 | |
| 
 | |
| /* OCI representation of XMLType */
 | |
| typedef struct OCIXMLType OCIXMLType;
 | |
| 
 | |
| /* OCI representation of OCIDomDocument */
 | |
| typedef struct OCIDOMDocument OCIDOMDocument;
 | |
| 
 | |
| /* OCI representation for the Binary XML repository context */
 | |
| typedef struct OCIBinXmlReposCtx OCIBinXmlReposCtx;
 | |
| 
 | |
| #endif /* ORL_ORACLE */
 |