Annotation of win32/sql/oracle/include/oci/orl.h, revision 1.1
1.1 ! parser 1: /* Copyright (c) 1993, 1995, 1996, 1997, 1998, 1999 by Oracle Corporation */
! 2:
! 3: /*
! 4: Author: Srinath Krishnaswamy
! 5: Date: 11/24/93
! 6: Source documents: "Functional Specification for C Language Mapping of
! 7: OTS Types, Object Management Subsystem", "Oracle C
! 8: Coding Standards version 2.2", and the header file
! 9: template
! 10: Rule sets: the generic and .h file rule sets
! 11: Quality status: not exited
! 12: Identification tag: [ one or more letters to identify the .h file ]
! 13: Revision code: 11/24/93
! 14:
! 15: NAME
! 16:
! 17: ORL - ORacle's external C Language interface to primitive OTS types
! 18:
! 19: DESCRIPTION
! 20:
! 21: This header file contains C langauge interface to the OTS primitive
! 22: types. The interface includes C mapping of OTS primitive types and
! 23: the prototype of the pre-defined operations on the primitive types.
! 24:
! 25: ***********************************************************************
! 26: *** NOTE: The OCI functions for objects requires the ***
! 27: *** application to be running in OBJECT mode. That is, during ***
! 28: *** process initialization OCIInitialize(), the mode ***
! 29: *** specified should be OBJECT mode. ***
! 30: ** OCIInitialize(OCI_OBJECT, ..); ***
! 31: ***********************************************************************
! 32:
! 33: RELATED DOCUMENTS
! 34:
! 35: [1] Krishnaswamy, Srinath and Nguyen, Tin A., "Functional Specification
! 36: for C Language Mapping of OTS Types, Object Management Subsystem",
! 37: March 1994.
! 38: [2] Nguyen, Tin A., "The Open Type System", Oracle Corporation,
! 39: February 1994.
! 40: [3] Klein, Jonathan D., "Large Field Management", Oracle Corporation,
! 41: October 1993.
! 42:
! 43: PUBLIC FUNCTIONS
! 44:
! 45: OCI - OCI functions to manipulate Oracle Number, float and decimal
! 46: ARITHMETIC
! 47: OCINumberInc - OCINumber INCrement (optimized)
! 48: OCINumberDec - OCINumber DECrement (optimized)
! 49: OCINumberAdd - OCINumber ADD numbers
! 50: OCINumberSub - OCINumber SUBtract numbers
! 51: OCINumberMul - OCINumber MULtiply numbers
! 52: OCINumberDiv - OCINumber DIVide numbers
! 53: OCINumberMod - OCINumber MODulo division
! 54: OCINumberIntPower - OCINumber integer PoWeR
! 55: OCINumberShift - OCINumber decimal ShiFT number
! 56: OCINumberNeg - OCINumber NEGate number
! 57: OCINumberAbs - OCINumber ABSolute value
! 58: OCINumberCeil - OCINumber CEiling of number
! 59: OCINumberFloor - OCINumber FLooR of number
! 60: OCINumberSqrt - OCINumber SQuare Root of number
! 61: OCINumberSign - OCINumber get SIGN of number
! 62: NATIVE TYPE CONVERSION
! 63: OCINumberToInt - OCINumber convert number TO machine-format Integer
! 64: OCINumberFromInt - OCINumber convert machine-format Integer TO Number
! 65: OCINumberToReal - OCINumber convert number TO machine-format Real
! 66: OCINumberFromReal - OCINumber convert machine-format Real TO Number
! 67: TEXT STRING CONVERSION
! 68: OCINumberToText - OCINumber convert number TO String
! 69: OCINumberFromText - OCINumber convert String TO Number
! 70: COMPARISON
! 71: OCINumberCmp - OCINumber CoMPare numbers
! 72: OCINumberIsZero - OCINumber comparison with ZERo
! 73: OCINumberIsInt - OCINumber Is an Integer
! 74: ASSIGNMENT
! 75: OCINumberAssign - OCINumber ASsiGn number
! 76: OCINumberSetZero - OCINumber Set number to Zero value
! 77: OCINumberSetPi - OCINumber Set number to Pi
! 78: ROUNDING
! 79: OCINumberTrunc - OCINumber TRUncate an Oracle number
! 80: OCINumberRound - OCINumber ROUnd number
! 81: OCINumberPrec - OCINumber round to Precision digits
! 82: TRANSCENDENTAL
! 83: OCINumberSin - OCINumber SINe
! 84: OCINumberArcSin - OCINumber Arc SINe
! 85: OCINumberHypSin - OCINumber SiNe Hyperbolic
! 86: OCINumberCos - OCINumber COSine
! 87: OCINumberArcCos - OCINumber Arc COSine
! 88: OCINumberHypCos - OCINumber CoSine Hyperbolic
! 89: OCINumberTan - OCINumber TANgent
! 90: OCINumberArcTan - OCINumber Arc TANgent
! 91: OCINumberArcTan2 - OCINumber Arc TaNgent 2
! 92: OCINumberHypTan - OCINumber TaNgent Hyperbolic
! 93: OCINumberPower - OCINumber arbitrary Base EXponentiation
! 94: OCINumberExp - OCINumber EXPonentiation to base e
! 95: OCINumberLn - OCINumber Logarithm Natural
! 96: OCINumberLog - OCINumber LOGarithm to arbitrary base
! 97:
! 98: OCIDate - OCI functions to manipulate OCI Date
! 99: OCIDateToExternal - OCIDate convert date to external form
! 100: OCIDateFromExternal - OCIDate convert external form of date into OCIDate
! 101: OCIDateAssign - OCIDate Assignment
! 102: OCIDateToText - OCIDate convert date TO String
! 103: OCIDateFromText - OCIDate convert String TO Date
! 104: OCIDateZoneToZone - OCIDate convert date from one time
! 105: Zone TO another Zone
! 106: OCIDateCompare - OCIDate CoMPare dates
! 107: OCIDateAddMonths - OCIDate ADd or subtract Months
! 108: OCIDateAddDays - OCIDate ADd or subtract Days
! 109: OCIDateLastDay - OCIDate get date of LaST day of month
! 110: OCIDateDaysBetween - OCIDate get number of days BeTWeen two dates
! 111: OCIDateNextDay - OCIDate get date of Next DaY
! 112: OCIDateCheck - OCIDate CHecK if the given date is valid
! 113: OCIDateSysDate - OCIDate get current SYStem date and time
! 114:
! 115: OCIString - OCI String functions to manipulate Variable-length string
! 116: OCIStringAssign - OCIString Assign string to string
! 117: OCIStringAssignText - OCIString Assign Text string to string
! 118: OCIStringResize - OCIString ReSiZe string
! 119: OCIStringSize - OCIString get String Size
! 120: OCIStringPtr - OCIString get String PoinTeR
! 121: OCIStringAllocSize - OCIString get Allocated SiZe
! 122:
! 123: OCIRaw - OCI Raw functions to manipulate variable-length raW
! 124: OCIRawAssignRaw - OCIRaw Assign Raw (of type OCIRaw*) to raw
! 125: (of type OCIRaw*)
! 126: OCIRawResize - OCIRaw Resize raw
! 127: OCIRawSize - OCIRaw get Raw Size
! 128: OCIRawPtr - OCIRaw get Raw data Pointer
! 129: OCIRawAllocSize - OCIRaw get Allocated Size
! 130:
! 131: OCIColl - OCI Collection generic functions. These functions can be
! 132: used to manipulate both variable-length array (varray) and
! 133: nested table.
! 134: OCICollSize - OCIColl return current SIZe of the given collection
! 135: (in number of elements)
! 136: OCICollMax - OCIColl return the MAXimum number of elements in the
! 137: collection (i.e. upper-bound)
! 138: OCICollGetElem - OCIColl GET pointer to the element at the given
! 139: position
! 140: OCICollAssignElem - OCIColl assign to element at given index
! 141: OCICollAssign - OCIColl ASsiGn collection; perform deep-copy of source
! 142: collection to target collection
! 143: OCICollAppend - OCIColl aPPend the given element to the end of the
! 144: collection
! 145: OCICollTrim - OCIColl trim (delete) the given number of elements
! 146: from the end of the collection
! 147: OCICollIsLocator - OCIColl indicates whether a collection is locator
! 148: based or not.
! 149: OCIIterCreate - OCIColl Create an ITerator to scan the collection
! 150: elements
! 151: OCIIterDelete - OCIColl Delete ITerator
! 152: OCIIterInit - OCIColl Initialize ITerator to scan the given collection
! 153: OCIIterGetCurrent - OCIColl Iterator based, get CURrent
! 154: collection element
! 155: OCIIterNext - OCIColl Iterator based, get NeXT collection element
! 156: OCIIterPrev - OCIColl Iterator based, get PReVious collection element
! 157:
! 158: OCITable - OCI functions to manipulate nested Table. The OCIColl*() and
! 159: OCITable*() functions can be used to manipulate nested table
! 160: OCITableDelete(i) - OCITable if element(i) exists then the element is
! 161: marked as deleted else the function returns false. So
! 162: delete's create "holes".
! 163: OCITableExists(i) - OCITable return true iff an element at
! 164: position i EXIsts
! 165: OCITableFirst - OCITable return the smallest value of i for which
! 166: exists(i) is true.
! 167: OCITableLast - OCITable return the largest value of i for which
! 168: exists(i) is true.
! 169: OCITableNext(i) - OCITable return pointer to the smallest position j,
! 170: greater than i, such that OCITableExists(j) is true
! 171: OCITablePrev(i) - OCITable return pointer to the largest position j,
! 172: less than i, such that OCITableExists(j) is true
! 173: OCITableSize - OCITable return current SIZe of the given nested table not
! 174: including deleted elements
! 175:
! 176: OCIRef - OCI functions to manipulate object Reference
! 177: OCIRefClear - OCIRef CLeaR or nullify a ref
! 178: OCIRefAssign - OCIRef ASsiGn a ref to another
! 179: OCIRefIsEqual - OCIRef compare two refs for EQUality
! 180: OCIRefIsNull - OCIRef test if a ref is NULl
! 181: OCIRefFromHex - OCIRef convert a Hexadecimal string TO a Ref
! 182: OCIRefToHex - OCIRef convert a ref to a Hexadecimal string
! 183: OCIRefHexSize - OCIRef get size of buffer in bytes to store hexadecimal
! 184: string
! 185:
! 186: OBSOLETE: to be replaced by functions from oci.h:
! 187:
! 188: ORLL - ORL functions to manipulate lob Locators
! 189: orllasg - ORLL AsiGn one locator to another
! 190: orllequ - ORLL compare two locators for EQUality
! 191: orlliini - ORLL Is the locator INItialized?
! 192: orllgsz - ORLL Get locator SiZe
! 193: orllgcid - ORLL Get Character set ID
! 194:
! 195: NOTE: The following are specific to FILE lobs:
! 196:
! 197: orllsnm - ORLL Set directory alias and file NaMe in the locator
! 198: orllgnm - ORLL Get directory alias and file NaMe from the locator
! 199:
! 200: EXAMPLES
! 201:
! 202: Examples are given in the description of each function where
! 203: relevant.
! 204:
! 205: NOTES
! 206:
! 207: This file has been subsetted to contain ONLY the routines that will
! 208: be in the first release.
! 209:
! 210: QUESTIONS
! 211:
! 212: MODIFIED
! 213: rkasamse 09/20/99 - lint changes
! 214: whe 09/01/99 - 976457:check __cplusplus for C++ code
! 215: hsbedi 08/11/99 - Add macro
! 216: rxgovind 10/14/98 - make non exposed calls (OCIRowType etc) private
! 217: rxgovind 06/09/98 - update OCIRowTypeCreate
! 218: nmantrav 05/11/98 - add OCIRowTypeGetCount
! 219: rxgovind 03/29/98 - add OCIRowType and OCIRowData interfaces
! 220: jwijaya 05/06/98 - add OCICollIsLocator
! 221: rxgovind 03/18/98 - opaque types: move to kolo.h
! 222: etucker 02/02/98 - add comments for Dec and Inc
! 223: etucker 01/29/98 - Finish core5 integration
! 224: rxgovind 11/11/97 - opaque types
! 225: etucker 10/28/97 - add ORLN functions for SDK
! 226: cxcheng 07/28/97 - remove OCILobLocator #define
! 227: skmishra 05/13/97 - stdcc compatibility changes
! 228: skrishna 04/25/97 - rename OCINumber*(): Exp Power TanHyp Zero Init
! 229: TanToArc Sqr Truncate and Compare
! 230: skotsovo 03/31/97 - remove OCILobLocatorSize
! 231: skrishna 03/25/97 - remove orld2i and orldi2d
! 232: skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types
! 233: cxcheng 02/06/97 - take out short name support except with SLSHORTNAME
! 234: skrishna 01/06/97 - update OCITableSize() comments
! 235: skrishna 12/27/96 - fix OCIDateGet/OCIDateSet
! 236: skrishna 12/12/96 - update OCICollGelElem comments
! 237: skrishna 11/07/96 - OCICollGetElem: interface change
! 238: skrishna 11/05/96 - add OCIDate Get/Set and OCIDateAssign
! 239: cxcheng 10/31/96 - change OCINumberTanHyp to OCINumberHypTan
! 240: cxcheng 10/30/96 - #define orll short names to long names
! 241: dchatter 10/26/96 - fix some OCI file long names
! 242: cxcheng 10/24/96 - remove unnecessary comment in front
! 243: cxcheng 10/14/96 - disable long name mapping for LOB functions
! 244: skrishna 10/13/96 - continue beautification
! 245: skotsovo 10/16/96 - update ocilob names
! 246: cxcheng 10/09/96 - add structure members in #define for date/time
! 247: cxcheng 10/09/96 - more lint fixes
! 248: skrishna 10/09/96 - continue beautification
! 249: cxcheng 10/09/96 - more fixes
! 250: skrishna 10/09/96 - change fixed-char rep. to orlvstr*
! 251: jwijaya 10/08/96 - continue beautification
! 252: jwijaya 10/07/96 - beautify
! 253: cxcheng 10/07/96 - more changes
! 254: cxcheng 10/04/96 - replace short names with long names
! 255: skrishna 10/01/96 - orlcsiz, orltsiz: change prototype to take errhdl
! 256: skrishna 09/23/96 - fix lint errors
! 257: skotsovo 09/23/96 - remove orllmkcur().
! 258: jwijaya 09/17/96 - comments on null ref
! 259: skrishna 09/19/96 - change orlraw format
! 260: skotsovo 09/19/96 - add orlliini and remove orllnul
! 261: skrishna 08/14/96 - orlvstr: change format to ub4 followed by text
! 262: jboonleu 08/06/96 - update comment
! 263: skotsovo 08/08/96 - revert to locators instead of descriptors as input t
! 264: jboonleu 07/23/96 - remove orlrcur
! 265: skrishna 07/06/96 - add orltsiz
! 266: skrishna 07/05/96 - add orld2i and orldi2d
! 267: jwijaya 07/03/96 - add ANSI prototypes
! 268: skrishna 06/27/96 - document default string format in orlds2d & orld2s
! 269: skrishna 06/25/96 - change max date value
! 270: skrishna 06/18/96 - modify orld2s() comments
! 271: skotsovo 06/13/96 - orll functions take lob descriptors instead of locat
! 272: rxgovind 06/05/96 - change prototype of orlrcur to take ocienvh
! 273: skrishna 05/30/96 - support collection trimming
! 274: skrishna 05/30/96 - remove orlralo/fre and orllalo/fre instead use
! 275: orionew/fre
! 276: skrishna 05/28/96 - add orlt*() and modify orla*()
! 277: skotsovo 05/23/96 - add orlbl typedefs for pro*c
! 278: jboonleu 05/14/96 - add orlrcur
! 279: rxgovind 05/08/96 - changes for 3gl callbacks
! 280: skotsovo 05/01/96 - in orllasg, no need to alloc orlbl*
! 281: skrishna 04/21/96 - merge changes from 960418 object branch into big
! 282: skrishna 04/17/96 - rename orlrcpy to orlrasg
! 283: skrishna 04/12/96 - add orlr2h and orlrh2r functions
! 284: skotsovo 04/15/96 - add fnt to make the lob locator current
! 285: skrishna 04/08/96 - change orl*() to take ocienvh* and ocierrh* instead
! 286: of oroenv*
! 287: skotsovo 03/22/96 - add locator functions
! 288: skotsovo 03/22/96 - add locator functions
! 289: skrishna 02/27/96 - remove mlslabel interface
! 290: skotsovo 02/20/96 - remove orlbty and use dty type instead.
! 291: skotsovo 02/14/96 - add text file lobs.
! 292: skrishna 01/31/96 - update comments of orln2r, orldchk, orlds2d & orld2s
! 293: skrishna 01/31/96 - change orld2s() and orln2s() to return string length
! 294: skrishna 01/21/96 - remove old raw interface
! 295: skrishna 12/14/95 - add raw interface
! 296: skotsovo 01/03/96 - change LOB offsets and lengths from ub4 to ubig_ora
! 297: to support 64 bit machines.
! 298: skotsovo 10/30/95 - add orlblsiz() to get lob locator size
! 299: skrishna 10/24/95 - move ref functions from ori and update the ref
! 300: functions to support variable-length ref
! 301: cxcheng 10/20/95 - add more comments on number versions
! 302: cxcheng 10/13/95 - add more number functions
! 303: cxcheng 08/29/95 - Support for segmented varrays
! 304: cxcheng 08/18/95 - modifiy orlmls structure
! 305: skrishna 06/06/95 - rename orln, orld, orlvs and orlva to orlnum,
! 306: orldat, orlvstr and orlvary respectively
! 307: skrishna 11/15/94 - remove orlnget() function
! 308: skrishna 09/20/94 - modify orldbtw() to return number of days only
! 309: skrishna 08/24/94 - change format string length type from ub4 to ub1
! 310: skrishna 07/19/94 - Rename orln2c & orlnc2n to orln2s & orlns2n
! 311: skrishna 06/29/94 - Add blob interface; add examples
! 312: skrishna 06/23/94 - Update comments and format
! 313: skrishna 05/19/94 - update varray append comments
! 314: skrishna 05/05/94 - Subsetting
! 315: skrishna 11/24/93 - Creation
! 316: */
! 317:
! 318: #ifndef ORATYPES
! 319: #include <oratypes.h>
! 320: #endif
! 321:
! 322: #ifndef ORO_ORACLE
! 323: #include <oro.h>
! 324: #endif
! 325:
! 326: #ifndef ORT_ORACLE
! 327: #include <ort.h>
! 328: #endif
! 329:
! 330: #ifndef OCI_ORACLE
! 331: #include <oci.h>
! 332: #endif
! 333:
! 334: #ifndef ORL_ORACLE
! 335: #define ORL_ORACLE
! 336:
! 337: /*---------------------------------------------------------------------------*/
! 338: /* SHORT NAMES SUPPORT SECTION */
! 339: /*---------------------------------------------------------------------------*/
! 340:
! 341: #ifdef SLSHORTNAME
! 342:
! 343: /* the following are short names that are only supported on IBM mainframes
! 344: with the SLSHORTNAME defined.
! 345: With this all subsequent long names will actually be substituted with
! 346: the short names here */
! 347:
! 348: #define OCIArray orlvary
! 349: #define OCIColl orlcol
! 350: #define OCICollAppend orlcapp
! 351: #define OCICollAssign orlcasg
! 352: #define OCICollAssignElem orlcase
! 353: #define OCICollGetElem orlcget
! 354: #define OCICollMax orlcmax
! 355: #define OCICollSize orlcsiz
! 356: #define OCICollTrim orlctrm
! 357: #define OCICollIsLocator orlcilc
! 358: #define OCIDate orldat
! 359: #define OCIDateAddDays orldadd
! 360: #define OCIDateAddMonths orldadm
! 361: #define OCIDateCheck orldchk
! 362: #define OCIDateCompare orldcmp
! 363: #define OCIDateDD day_orldat
! 364: #define OCIDateDaysBetween orldbtw
! 365: #define OCIDateFromText orlds2d
! 366: #define OCIDateLastDay orldlst
! 367: #define OCIDateMM mon_orldat
! 368: #define OCIDateNextDay orldndy
! 369: #define OCIDateSysDate orldsys
! 370: #define OCIDateTime time_orldat
! 371: #define OCIDateYYYY gye_orldat
! 372: #define OCIDateZoneToZone orldz2z
! 373: #define OCIIter orlcitr
! 374: #define OCIIterCreate orlccit
! 375: #define OCIIterDelete orlcdit
! 376: #define OCIIterGetCurrent orlcicur
! 377: #define OCIIterInit orlciit
! 378: #define OCIIterNext orlcinxt
! 379: #define OCIIterPrev orlciprv
! 380: #define OCINumber orlnum
! 381: #define OCINumberAbs orlnabs
! 382: #define OCINumberAdd orlnadd
! 383: #define OCINumberArcCos orlnacos
! 384: #define OCINumberArcSin orlnasin
! 385: #define OCINumberArcTan orlnatan
! 386: #define OCINumberAssign orlnasg
! 387: #define OCINumberCeil orlncel
! 388: #define OCINumberCos orlncos
! 389: #define OCINumberDiv orlndiv
! 390: #define OCINumberPower orlnbex
! 391: #define OCINumberFloor orlnflr
! 392: #define OCINumberFromInt orlni2n
! 393: #define OCINumberFromReal orlnr2n
! 394: #define OCINumberFromText orlns2n
! 395: #define OCINumberHypCos orlncsh
! 396: #define OCINumberHypSin orlnsnh
! 397: #define OCINumberSetZero orlnini
! 398: #define OCINumberSetPi orlnspi
! 399: #define OCINumberInc orlninc
! 400: #define OCINumberDec orlndec
! 401: #define OCINumberIntPower orlnpwr
! 402: #define OCINumberLn orlnln
! 403: #define OCINumberLog orlnlog
! 404: #define OCINumberMod orlnmod
! 405: #define OCINumberMul orlnmul
! 406: #define OCINumberNeg orlnneg
! 407: #define OCINumberPart orlnpart
! 408: #define OCINumberExp orlnexp
! 409: #define OCINumberRound orlnrou
! 410: #define OCINumberPrec orlnpre
! 411: #define OCINumberShift orlnsft
! 412: #define OCINumberSign orlnsgn
! 413: #define OCINumberSin orlnsin
! 414: #define OCINumberSqrt orlnsqr
! 415: #define OCINumberSub orlnsub
! 416: #define OCINumberTan orlntan
! 417: #define OCINumberHypTan orlntnh
! 418: #define OCINumberArcTan2 orlnatn2
! 419: #define OCINumberToInt orln2i
! 420: #define OCINumberToReal orln2r
! 421: #define OCINumberToText orln2s
! 422: #define OCINumberTrunc orlntru
! 423: #define OCINumberCmp orlncmp
! 424: #define OCINumberIsZero orlnzer
! 425: #define OCINumberIsInt orlnint
! 426: #define OCIRaw orlraw
! 427: #define OCIRawAllocSize orlwasz
! 428: #define OCIRawAssignBytes orlwabr
! 429: #define OCIRawAssignRaw orlwarr
! 430: #define OCIRawPtr orlwgrp
! 431: #define OCIRawResize orlwrsz
! 432: #define OCIRawSize orlwgsz
! 433: #define OCIRefAssign orlrasg
! 434: #define OCIRefClear orlrclr
! 435: #define OCIRefFromHex orlrh2r
! 436: #define OCIRefHexSize orlrhsz
! 437: #define OCIRefIsEqual orlrequ
! 438: #define OCIRefIsNull orlrnul
! 439: #define OCIRefToHex orlr2h
! 440: #define OCIString orlvstr
! 441: #define OCIStringAllocSize orlvasz
! 442: #define OCIStringAssign orlvass
! 443: #define OCIStringAssignText orlvats
! 444: #define OCIStringPtr orlvgsp
! 445: #define OCIStringResize orlvrsz
! 446: #define OCIStringSize orlvgsz
! 447: #define OCITable orltbl
! 448: #define OCITableDelete orltdel
! 449: #define OCITableExists orltexi
! 450: #define OCITableFirst orltfst
! 451: #define OCITableLast orltlst
! 452: #define OCITableNext orltnxt
! 453: #define OCITablePrev orltprv
! 454: #define OCITableSize orltsiz
! 455: #define OCITime orldtm
! 456: #define OCITimeHH orldtmhh
! 457: #define OCITimeMI orldtmmm
! 458: #define OCITimeSS orldtmss
! 459: #define OCI_LOBMODE_READONLY ORLBMORO
! 460: #define OCI_LOBMODE_READWRITE ORLBMORW
! 461:
! 462: #endif /* SLSHORTNAME */
! 463:
! 464: /*****************************************************************************/
! 465: /* NUMBER/FLOAT/DECIMAL TYPE */
! 466: /*****************************************************************************/
! 467:
! 468: #define OCI_NUMBER_SIZE 22
! 469: struct OCINumber
! 470: {
! 471: ub1 OCINumberPart[OCI_NUMBER_SIZE];
! 472: };
! 473: typedef struct OCINumber OCINumber;
! 474:
! 475: /*
! 476: * OCINumber - OCI Number mapping in c
! 477: *
! 478: * The OTS types: NUMBER, NUMERIC, INT, SHORTINT, REAL, DOUBLE PRECISION,
! 479: * FLOAT and DECIMAL are represented by OCINumber.
! 480: * The contents of OCINumber is opaque to clients.
! 481: *
! 482: * For binding variables of type OCINumber in OCI calls (OCIBindByName(),
! 483: * OCIBindByPos(), and OCIDefineByPos()) use the type code SQLT_VNU.
! 484: */
! 485:
! 486: /*
! 487: EXAMPLE
! 488:
! 489: The following example shows how to manipulate an attribute of type
! 490: oracle number.
! 491:
! 492: struct person
! 493: {
! 494: OCINumber sal;
! 495: };
! 496: typedef struct person person;
! 497:
! 498: OCIError *err;
! 499: person* joe;
! 500: person* tom;
! 501: person* debbie;
! 502: OCINumber *joesal;
! 503: OCINumber *tomsal;
! 504: OCINumber *debsal;
! 505: sword status;
! 506: int inum;
! 507: double dnum;
! 508: OCINumber ornum;
! 509: char buffer[21];
! 510: ub4 buflen;
! 511: sword result;
! 512:
! 513: /o See oci.h for an example of how to initialize OCIError.
! 514: o For this example, assume the OCIEnv and OCIError has been
! 515: o initialized.
! 516: o/
! 517:
! 518: /o Pin joe, tom and debbie person objects in the object cache. See ori.h
! 519: o for an example on pinning objects. For this example, assume that
! 520: o joe, tom and debbie are pointing to pinned objects.
! 521: o/
! 522: joesal = &joe->sal;
! 523: tomsal = &tom->sal;
! 524: debsal = &debbie->sal;
! 525:
! 526: /o initialize joe's salary to be $12,000 o/
! 527: inum = 12000;
! 528: status = OCINumberFromInt(err, &inum, sizeof(inum), OCI_NUMBER_SIGNED,
! 529: joesal);
! 530: if (status != OCI_SUCCESS)
! 531: /o goto to handle error from OCINumberFromInt o/;
! 532:
! 533: /o initialize tom's salary to be same as joe o/
! 534: OCINumberAssign(err, joesal, tomsal);
! 535:
! 536: /o initialize debbie's salary to be 20% more than joe's o/
! 537: dnum = 1.2;
! 538: status = OCINumberFromReal(err, &dnum, sizeof(double), &ornum);
! 539: if (status != OCI_SUCCESS)
! 540: /o goto to handle error from OCINumberFromReal o/;
! 541: status = OCINumberMul(err, joesal, &ornum, debsal);
! 542: if (status != OCI_SUCCESS) /o goto to handle error from OCINumberMul o/;
! 543:
! 544: /o give tom a 50% raise o/
! 545: dnum = 1.5;
! 546: status = OCINumberFromReal(err, &dnum, sizeof(double), &ornum);
! 547: if (status != OCI_SUCCESS)
! 548: /o goto to handle error from OCINumberFromReal o/;
! 549: status = OCINumberMul(err, tomsal, &ornum, tomsal);
! 550: if (status != OCI_SUCCESS) /o goto to handle error from OCINumberMul o/;
! 551:
! 552: /o double joe's salary o/
! 553: status = OCINumberAdd(err, joesal, joesal, joesal);
! 554: if (status != OCI_SUCCESS) /o goto to handle error from OCINumberAdd o/;
! 555:
! 556: /o get joe's salary in integer o/
! 557: status = OCINumberToInt(err, joesal, sizeof(inum), OCI_NUMBER_SIGNED,
! 558: &inum);
! 559: if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToInt o/;
! 560: /o inum is set to 24000 o/
! 561:
! 562: /o get debbie's salary in double o/
! 563: status = OCINumberToReal(err, debsal, sizeof(dnum), &dnum);
! 564: if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToReal o/;
! 565: /o dnum is set to 14400 o/
! 566:
! 567: /o print tom's salary as DEM0001`8000.00 o/
! 568: buflen = sizeof(buffer);
! 569: status = OCINumberToText(err, tomsal, "C0999G9999D99", 13,
! 570: "NLS_NUMERIC_CHARACTERS='.`' NLS_ISO_CURRENCY='Germany'", 54,
! 571: &buflen, buffer);
! 572: if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToText o/;
! 573: printf("tom's salary = %s\n", buffer);
! 574:
! 575: /o compare joe and tom's salary o/
! 576: status = OCINumberCmp(err, joesal, tomsal, &result);
! 577: if (status != OCI_SUCCESS) /o goto to handle error from OCINumberCmp o/;
! 578: /o result is positive o/
! 579:
! 580: /o read debbie's new salary from string o/
! 581: status = OCINumberFromText(err, "48`000.00", 9, "99G999D99", 9,
! 582: "NLS_NUMERIC_CHARACTERS='.`'", 27, debsal);
! 583: if (status != OCI_SUCCESS)
! 584: /o goto to handle error from OCINumberFromText o/;
! 585: /o debbie's salary is now 48000.00 o/
! 586:
! 587: */
! 588:
! 589: /*----------------------------- OCINumberInc --------------------------------*/
! 590:
! 591: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 592: sword OCINumberInc(/*_ OCIError *err, OCINumber *number _*/);
! 593: #else /* ANSI C */
! 594: sword OCINumberInc( OCIError *err, OCINumber *number );
! 595: #endif
! 596: /*
! 597: NAME: OCINumberInc - OCINumber INCrement numbers
! 598: PARAMETERS:
! 599: err (IN/OUT) - error handle. If there is an error, it is
! 600: recorded in 'err' and this function returns OCI_ERROR.
! 601: The error recorded in 'err' can be retrieved by calling
! 602: OCIErrorGet().
! 603: number (IN/OUT) a positive Oracle number to be incremented
! 604: DESCRIPTION:
! 605: Increment Oracle number in place. It is assumed that the input is
! 606: an integer between 0 and 100^21-2. If the is input too large, it will
! 607: be treated as 0 - the result will be an Oracle number 1. If the input
! 608: is not a positive integer, the result will be unpredictable.
! 609: RETURNS:
! 610: OCI_SUCCESS if the function completes successfully.
! 611: OCI_INVALID_HANDLE if 'err' is NULL.
! 612: OCI_ERROR if
! 613: any of the number arguments is null
! 614: */
! 615:
! 616: /*----------------------------- OCINumberDec --------------------------------*/
! 617:
! 618: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 619: sword OCINumberDec(/*_ OCIError *err, OCINumber *number _*/);
! 620: #else /* ANSI C */
! 621: sword OCINumberDec( OCIError *err, OCINumber *number );
! 622: #endif
! 623: /*
! 624: NAME: OCINumberDec - OCINumber DECrement numbers
! 625: PARAMETERS:
! 626: err (IN/OUT) - error handle. If there is an error, it is
! 627: recorded in 'err' and this function returns OCI_ERROR.
! 628: The error recorded in 'err' can be retrieved by calling
! 629: OCIErrorGet().
! 630: number (IN/OUT) - a positive Oracle number to be decremented
! 631: DESCRIPTION:
! 632: Decrement Oracle number in place. It is assumed that the input is an
! 633: integer between 1 and 100^21-2. If the input is too large, it will be
! 634: treated as 1 - the result will be an Oracle number 0. If the input is
! 635: not a positive integer, the result will be unpredictable.
! 636: RETURNS:
! 637: OCI_SUCCESS if the function completes successfully.
! 638: OCI_INVALID_HANDLE if 'err' is NULL.
! 639: OCI_ERROR if
! 640: any of the number arguments is null
! 641: */
! 642:
! 643: /*-------------------------- OCINumberSetZero -------------------------------*/
! 644:
! 645: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 646: void OCINumberSetZero(/*_ OCIError *err, OCINumber *num _*/);
! 647: #else /* ANSI C */
! 648: void OCINumberSetZero( OCIError *err, OCINumber *num );
! 649: #endif
! 650: /*
! 651: NAME: OCINumberSetZero - OCINumber Set number to Zero value
! 652: PARAMETERS:
! 653: err (IN/OUT) - pointer to OCI error handle
! 654: num (OUT) - set to zero value
! 655: DESCRIPTION:
! 656: Initialize the given number to value 0.
! 657: */
! 658:
! 659: /*--------------------------- OCINumberSetPi --------------------------------*/
! 660:
! 661: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 662: void OCINumberSetPi(/*_ OCIError *err, OCINumber *num _*/);
! 663: #else /* ANSI C */
! 664: void OCINumberSetPi( OCIError *err, OCINumber *num );
! 665: #endif
! 666: /*
! 667: NAME: OCINumberSetPi - OCINumber Set number to Pi
! 668: err (IN/OUT) - pointer to OCI error handle
! 669: num (OUT) - set to zero value
! 670: DESCRIPTION:
! 671: Initialize the given number to value Pi.
! 672: */
! 673:
! 674: /*----------------------------- OCINumberAdd --------------------------------*/
! 675:
! 676: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 677: sword OCINumberAdd(/*_ OCIError *err, CONST OCINumber *number1,
! 678: CONST OCINumber *number2, OCINumber *result _*/);
! 679: #else /* ANSI C */
! 680: sword OCINumberAdd( OCIError *err, CONST OCINumber *number1,
! 681: CONST OCINumber *number2, OCINumber *result );
! 682: #endif
! 683: /*
! 684: NAME: OCINumberAdd - OCINumber ADD numbers
! 685: PARAMETERS:
! 686: err (IN/OUT) - error handle. If there is an error, it is
! 687: recorded in 'err' and this function returns OCI_ERROR.
! 688: The error recorded in 'err' can be retrieved by calling
! 689: OCIErrorGet().
! 690: number1, number2 (IN) - numbers to be added
! 691: result (OUT) - result of adding 'number1' with 'number2'
! 692: DESCRIPTION:
! 693: Add 'number1' with 'number2' and return result in 'result'.
! 694: RETURNS:
! 695: OCI_SUCCESS if the function completes successfully.
! 696: OCI_INVALID_HANDLE if 'err' is NULL.
! 697: OCI_ERROR if
! 698: any of the number arguments is null
! 699: */
! 700:
! 701: /*----------------------------- OCINumberSub --------------------------------*/
! 702:
! 703: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 704: sword OCINumberSub(/*_ OCIError *err, CONST OCINumber *number1,
! 705: CONST OCINumber *number2, OCINumber *result _*/);
! 706: #else /* ANSI C */
! 707: sword OCINumberSub( OCIError *err, CONST OCINumber *number1,
! 708: CONST OCINumber *number2, OCINumber *result );
! 709: #endif
! 710: /*
! 711: NAME: OCINumberSub - OCINumber SUBtract numbers
! 712: PARAMETERS:
! 713: err (IN/OUT) - error handle. If there is an error, it is
! 714: recorded in 'err' and this function returns OCI_ERROR.
! 715: The error recorded in 'err' can be retrieved by calling
! 716: OCIErrorGet().
! 717: number1, number2 (IN) - 'number2' subtracted from 'number1'
! 718: result (OUT) - subtraction result
! 719: DESCRIPTION:
! 720: Subtract 'number2' from 'number1' and return result in 'result'.
! 721: RETURNS:
! 722: OCI_SUCCESS if the function completes successfully.
! 723: OCI_INVALID_HANDLE if 'err' is NULL.
! 724: OCI_ERROR if
! 725: any of the number arguments is null
! 726: */
! 727:
! 728: /*----------------------------- OCINumberMul --------------------------------*/
! 729:
! 730: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 731: sword OCINumberMul(/*_ OCIError *err, CONST OCINumber *number1,
! 732: CONST OCINumber *number2, OCINumber *result _*/);
! 733: #else /* ANSI C */
! 734: sword OCINumberMul( OCIError *err, CONST OCINumber *number1,
! 735: CONST OCINumber *number2, OCINumber *result );
! 736: #endif
! 737: /*
! 738: NAME: OCINumberMul - OCINumber MULtiply numbers
! 739: PARAMETERS:
! 740: err (IN/OUT) - error handle. If there is an error, it is
! 741: recorded in 'err' and this function returns OCI_ERROR.
! 742: The error recorded in 'err' can be retrieved by calling
! 743: OCIErrorGet().
! 744: number1, number2 (IN) - numbers to be multiplied
! 745: result (OUT) - multiplication result
! 746: DESCRIPTION:
! 747: Multiply 'number1' with 'number2' and return result in 'result'.
! 748: RETURNS:
! 749: OCI_SUCCESS if the function completes successfully.
! 750: OCI_INVALID_HANDLE if 'err' is NULL.
! 751: OCI_ERROR if
! 752: any of the number arguments is null
! 753: */
! 754:
! 755: /*----------------------------- OCINumberDiv --------------------------------*/
! 756:
! 757: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 758: sword OCINumberDiv(/*_ OCIError *err, CONST OCINumber *number1,
! 759: CONST OCINumber *number2, OCINumber *result _*/);
! 760: #else /* ANSI C */
! 761: sword OCINumberDiv( OCIError *err, CONST OCINumber *number1,
! 762: CONST OCINumber *number2, OCINumber *result );
! 763: #endif
! 764: /*
! 765: NAME: OCINumberDiv - OCINumber DIVide numbers
! 766: PARAMETERS:
! 767: err (IN/OUT) - error handle. If there is an error, it is
! 768: recorded in 'err' and this function returns OCI_ERROR.
! 769: The error recorded in 'err' can be retrieved by calling
! 770: OCIErrorGet().
! 771: number1 (IN) - pointer to the numerator
! 772: number2 (IN) - pointer to the denominator
! 773: result (OUT) - division result
! 774: DESCRIPTION:
! 775: Divide 'number1' by 'number2' and return result in 'result'.
! 776: RETURNS:
! 777: OCI_SUCCESS if the function completes successfully.
! 778: OCI_INVALID_HANDLE if 'err' is NULL.
! 779: OCI_ERROR if
! 780: any of the number arguments is null
! 781: underflow errorr
! 782: overflow errorr
! 783: divide by zero errorr
! 784: */
! 785:
! 786: /*----------------------------- OCINumberMod --------------------------------*/
! 787:
! 788: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 789: sword OCINumberMod(/*_ OCIError *err, CONST OCINumber *number1,
! 790: CONST OCINumber *number2, OCINumber *result _*/);
! 791: #else /* ANSI C */
! 792: sword OCINumberMod( OCIError *err, CONST OCINumber *number1,
! 793: CONST OCINumber *number2, OCINumber *result );
! 794: #endif
! 795: /*
! 796: NAME: OCINumberMod - OCINumber MODulous
! 797: PARAMETERS:
! 798: err (IN/OUT) - error handle. If there is an error, it is
! 799: recorded in 'err' and this function returns OCI_ERROR.
! 800: The error recorded in 'err' can be retrieved by calling
! 801: OCIErrorGet().
! 802: number1 (IN) - pointer to the numerator
! 803: number2 (IN) - pointer to the denominator
! 804: result (OUT) - remainder of the result
! 805: DESCRIPTION:
! 806: Finds the remainder of the division of two Oracle numbers.
! 807: RETURNS:
! 808: OCI_SUCCESS if the function completes successfully.
! 809: OCI_INVALID_HANDLE if 'err' is NULL.
! 810: OCI_ERROR if
! 811: any of the number arguments is null
! 812: divide by zero errorr
! 813: */
! 814:
! 815: /*------------------------ OCINumberIntPower --------------------------------*/
! 816:
! 817: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 818: sword OCINumberIntPower(/*_ OCIError *err, CONST OCINumber *base,
! 819: CONST sword exp, OCINumber *result _*/);
! 820: #else /* ANSI C */
! 821: sword OCINumberIntPower( OCIError *err, CONST OCINumber *base,
! 822: CONST sword exp, OCINumber *result );
! 823: #endif
! 824: /*
! 825: NAME: OCINumberIntPower - OCINumber takes an arbitary base to an arbitary
! 826: integer PoWeR
! 827: PARAMETERS:
! 828: err (IN/OUT) - error handle. If there is an error, it is
! 829: recorded in 'err' and this function returns OCI_ERROR.
! 830: The error recorded in 'err' can be retrieved by calling
! 831: OCIErrorGet().
! 832: base (IN) - base of the exponentiation
! 833: exp (IN) - exponent to which the base is to be raised
! 834: result (OUT) - output of exponentiation
! 835: DESCRIPTION:
! 836: Takes an arbitary base to an arbitary integer power.
! 837: RETURNS:
! 838: OCI_SUCCESS if the function completes successfully.
! 839: OCI_INVALID_HANDLE if 'err' is NULL.
! 840: OCI_ERROR if
! 841: any of the number arguments is null
! 842: */
! 843:
! 844: /*-------------------------- OCINumberShift ---------------------------------*/
! 845:
! 846: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 847: sword OCINumberShift(/*_ OCIError *err, CONST OCINumber *number,
! 848: CONST sword nDig, OCINumber *result _*/);
! 849: #else /* ANSI C */
! 850: sword OCINumberShift( OCIError *err, CONST OCINumber *number,
! 851: CONST sword nDig, OCINumber *result );
! 852: #endif
! 853: /*
! 854: NAME: OCINumberShift - OCINumber multiplies by a power of 10.
! 855:
! 856: PARAMETERS:
! 857: err (IN/OUT) - error handle. If there is an error, it is
! 858: recorded in 'err' and this function returns OCI_ERROR.
! 859: The error recorded in 'err' can be retrieved by calling
! 860: OCIErrorGet().
! 861: number (IN) - Oracle Number to be shifted.
! 862: nDig (IN) - number of decimal places to shift.
! 863: result (OUT) - shift result.
! 864: DESCRIPTION:
! 865: Multiplies number by 10^NDig and sets product to the result.
! 866: RETURNS:
! 867: OCI_SUCCESS if the function completes successfully.
! 868: OCI_INVALID_HANDLE if 'err' is NULL.
! 869: OCI_ERROR if
! 870: any of the number arguments is null
! 871: */
! 872:
! 873: /*----------------------------- OCINumberNeg --------------------------------*/
! 874:
! 875: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 876: sword OCINumberNeg(/*_ OCIError *err, CONST OCINumber *number,
! 877: OCINumber *result _*/);
! 878: #else /* ANSI C */
! 879: sword OCINumberNeg( OCIError *err, CONST OCINumber *number,
! 880: OCINumber *result );
! 881: #endif
! 882: /*
! 883: NAME: OCINumberNeg - OCINumber NEGate number
! 884: PARAMETERS:
! 885: err (IN/OUT) - error handle. If there is an error, it is
! 886: recorded in 'err' and this function returns OCI_ERROR.
! 887: The error recorded in 'err' can be retrieved by calling
! 888: OCIErrorGet().
! 889: number (IN) - number to be negated
! 890: result (OUT) - will contain negated value of 'number'
! 891: DESCRIPTION:
! 892: Negates an Oracle number.
! 893: RETURNS:
! 894: OCI_SUCCESS if the function completes successfully.
! 895: OCI_INVALID_HANDLE if 'err' is NULL.
! 896: OCI_ERROR if
! 897: any of the number arguments is null
! 898: */
! 899:
! 900: /*------------------------- OCINumberToText ---------------------------------*/
! 901:
! 902: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 903: sword OCINumberToText(/*_ OCIError *err, CONST OCINumber *number,
! 904: CONST text *fmt, ub4 fmt_length,
! 905: CONST text *nls_params, ub4 nls_p_length,
! 906: ub4 *buf_size, text *buf _*/);
! 907: #else /* ANSI C */
! 908: sword OCINumberToText( OCIError *err, CONST OCINumber *number,
! 909: CONST text *fmt, ub4 fmt_length,
! 910: CONST text *nls_params, ub4 nls_p_length,
! 911: ub4 *buf_size, text *buf );
! 912: #endif
! 913: /*
! 914: NAME: OCINumberToText - OCINumber convert number TO String
! 915: PARAMETERS:
! 916: err (IN/OUT) - error handle. If there is an error, it is
! 917: recorded in 'err' and this function returns OCI_ERROR.
! 918: The error recorded in 'err' can be retrieved by calling
! 919: OCIErrorGet().
! 920: number (IN) - Oracle number to be converted
! 921: fmt (IN) - conversion format
! 922: fmt_length (IN) - length of the 'fmt' parameter
! 923: nls_params (IN) - nls format specification, if null string
! 924: i.e. (text *)0, then the default parameters for the
! 925: session is used
! 926: nls_p_length (IN) - length of the 'nls_params' parameter
! 927: buf_size (IN/OUT) - size of the buffer must be passed as input by
! 928: the caller, this function will return the length of the
! 929: resulting string in bytes via this parameter. The length
! 930: does not include the terminating null ('\0').
! 931: buf (OUT) - buffer into which the converted string is placed. The
! 932: resulting string is null terminated.
! 933: DESCRIPTION:
! 934: Converts the given number to a character string
! 935: according to the specified format. Refer to "TO_NUMBER" conversion
! 936: function described in "Oracle SQL Language Reference Manual" for a
! 937: description of format and NLS parameters.
! 938: The converted number string is stored in the buffer 'buf', up to
! 939: a max of '*buf_size' bytes. Length of the resulting string is
! 940: returned via 'buf_size'.
! 941: RETURNS:
! 942: OCI_SUCCESS if the function completes successfully.
! 943: OCI_INVALID_HANDLE if 'err' is NULL.
! 944: OCI_ERROR if
! 945: 'number' or 'buf' is null
! 946: buffer too small
! 947: invalid format
! 948: invalid nls format
! 949: number to text translation for the given format causes overflow
! 950: */
! 951:
! 952: /*-------------------------- OCINumberFromText ------------------------------*/
! 953:
! 954: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 955: sword OCINumberFromText(/*_ OCIError *err, CONST text *str,
! 956: ub4 str_length, CONST text *fmt, ub4 fmt_length,
! 957: CONST text *nls_params, ub4 nls_p_length,
! 958: OCINumber *number _*/);
! 959: #else /* ANSI C */
! 960: sword OCINumberFromText( OCIError *err, CONST text *str,
! 961: ub4 str_length, CONST text *fmt, ub4 fmt_length,
! 962: CONST text *nls_params, ub4 nls_p_length,
! 963: OCINumber *number );
! 964: #endif
! 965: /*
! 966: NAME: OCINumberFromText - OCINumber convert String TO Number
! 967: PARAMETERS:
! 968: err (IN/OUT) - error handle. If there is an error, it is
! 969: recorded in 'err' and this function returns OCI_ERROR.
! 970: The error recorded in 'err' can be retrieved by calling
! 971: OCIErrorGet().
! 972: str (IN) - input string to be converted to Oracle number
! 973: str_length (IN) - size of the input string
! 974: fmt (IN) - conversion format
! 975: fmt_length (IN) - length of the 'fmt' parameter
! 976: nls_params (IN) - nls format specification, if null string
! 977: i.e. (text *)0, then the default parameters for the
! 978: session is used
! 979: nls_p_length (IN) - length of the 'nls_params' parameter
! 980: number (OUT) - given string converted to number
! 981: DESCRIPTION:
! 982: Converts the given string to a number
! 983: according to the specified format. Refer to "TO_NUMBER" conversion
! 984: function described in "Oracle SQL Language Reference Manual" for a
! 985: description of format and NLS parameters.
! 986: RETURNS:
! 987: OCI_SUCCESS if the function completes successfully.
! 988: OCI_INVALID_HANDLE if 'err' is NULL.
! 989: OCI_ERROR if
! 990: 'number' or 'str' is null
! 991: 'str_length' is 0
! 992: invalid format
! 993: invalid nls format
! 994: invalid input string
! 995: */
! 996:
! 997: /*-------------------------- OCINumberToInt ---------------------------------*/
! 998:
! 999: #define OCI_NUMBER_UNSIGNED 0 /* Unsigned type -- ubX */
! 1000: #define OCI_NUMBER_SIGNED 2 /* Signed type -- sbX */
! 1001:
! 1002: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1003: sword OCINumberToInt(/*_ OCIError *err, CONST OCINumber *number,
! 1004: uword rsl_length, uword rsl_flag, dvoid *rsl _*/);
! 1005: #else /* ANSI C */
! 1006: sword OCINumberToInt( OCIError *err, CONST OCINumber *number,
! 1007: uword rsl_length, uword rsl_flag, dvoid *rsl );
! 1008: #endif
! 1009: /*
! 1010: NAME: OCINumberToInt - OCINumber convert number TO Integer
! 1011: PARAMETERS:
! 1012: err (IN/OUT) - error handle. If there is an error, it is
! 1013: recorded in 'err' and this function returns OCI_ERROR.
! 1014: The error recorded in 'err' can be retrieved by calling
! 1015: OCIErrorGet().
! 1016: number (IN) - number to be converted
! 1017: rsl_length (IN) - size of the desired result
! 1018: rsl_s_flag (IN) - flag denoting the desired sign of the output; valid
! 1019: values are OCI_NUMBER_UNSIGNED, OCI_NUMBER_SIGNED
! 1020: rsl (OUT) - pointer to space for the result
! 1021: DESCRIPTION:
! 1022: Native type conversion function.
! 1023: Converts the given Oracle number into an xbx (e.g. ub2, ub4, sb2 etc.)
! 1024: RETURNS:
! 1025: OCI_SUCCESS if the function completes successfully.
! 1026: OCI_INVALID_HANDLE if 'err' is NULL.
! 1027: OCI_ERROR if
! 1028: 'number' or 'rsl' is null
! 1029: integer value of 'number' is too big -- overflow
! 1030: integer value of 'number' is too small -- underflow
! 1031: invalid sign flag value ('rsl_s_flag')
! 1032: */
! 1033:
! 1034: /*--------------------------- OCINumberFromInt ------------------------------*/
! 1035:
! 1036: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1037: sword OCINumberFromInt(/*_ OCIError *err, CONST dvoid *inum, uword inum_length,
! 1038: uword inum_s_flag, OCINumber *number _*/);
! 1039: #else /* ANSI C */
! 1040: sword OCINumberFromInt( OCIError *err, CONST dvoid *inum, uword inum_length,
! 1041: uword inum_s_flag, OCINumber *number );
! 1042: #endif
! 1043: /*
! 1044: NAME: OCINumberFromInt - OCINumber convert Integer TO Number
! 1045: PARAMETERS:
! 1046: err (IN/OUT) - error handle. If there is an error, it is
! 1047: recorded in 'err' and this function returns OCI_ERROR.
! 1048: The error recorded in 'err' can be retrieved by calling
! 1049: OCIErrorGet().
! 1050: inum (IN) - pointer to the integer to be converted
! 1051: inum_length (IN) - size of the integer
! 1052: inum_s_flag (IN) - flag that designates the sign of the integer; valid
! 1053: values are OCI_NUMBER_UNSIGNED, OCI_NUMBER_SIGNED
! 1054: number (OUT) - given integer converted to Oracle number
! 1055: DESCRIPTION:
! 1056: Native type conversion function. Converts any Oracle standard
! 1057: machine-native integer type (xbx) to an Oracle number.
! 1058: RETURNS:
! 1059: OCI_SUCCESS if the function completes successfully.
! 1060: OCI_INVALID_HANDLE if 'err' is NULL.
! 1061: OCI_ERROR if
! 1062: 'number' or 'inum' is null
! 1063: integer too BIG -- the number is too large to fit into an Oracle
! 1064: number
! 1065: invalid sign flag value ('inum_s_flag')
! 1066: */
! 1067:
! 1068: /*------------------------- OCINumberToReal ---------------------------------*/
! 1069:
! 1070: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1071: sword OCINumberToReal(/*_ OCIError *err, CONST OCINumber *number,
! 1072: uword rsl_length, dvoid *rsl _*/);
! 1073: #else /* ANSI C */
! 1074: sword OCINumberToReal( OCIError *err, CONST OCINumber *number,
! 1075: uword rsl_length, dvoid *rsl );
! 1076: #endif
! 1077: /*
! 1078: NAME: OCINumberToReal - OCINumber convert number TO Real
! 1079: PARAMETERS:
! 1080: err (IN/OUT) - error handle. If there is an error, it is
! 1081: recorded in 'err' and this function returns OCI_ERROR.
! 1082: The error recorded in 'err' can be retrieved by calling
! 1083: OCIErrorGet().
! 1084: number (IN) - number to be converted
! 1085: rsl_length (IN) - is the size of the desired result,
! 1086: sizeof( float | double | long double)
! 1087: rsl (OUT) - pointer to space for storing the result
! 1088: DESCRIPTION:
! 1089: Native type conversion function. Converts an Oracle number into a
! 1090: machine-native real type. This function only converts numbers up to
! 1091: LDBL_DIG, DBL_DIG, or FLT_DIG digits of precision and removes
! 1092: trailing zeroes. The above constants are defined in float.h
! 1093: RETURNS:
! 1094: OCI_SUCCESS if the function completes successfully.
! 1095: OCI_INVALID_HANDLE if 'err' is NULL.
! 1096: OCI_ERROR if
! 1097: 'number' or 'rsl' is null
! 1098: 'rsl_length' is 0
! 1099: */
! 1100:
! 1101: /*-------------------------- OCINumberFromReal ------------------------------*/
! 1102:
! 1103: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1104: sword OCINumberFromReal(/*_ OCIError *err, CONST dvoid *rnum,
! 1105: uword rnum_length, OCINumber *number _*/);
! 1106: #else /* ANSI C */
! 1107: sword OCINumberFromReal( OCIError *err, CONST dvoid *rnum,
! 1108: uword rnum_length, OCINumber *number );
! 1109: #endif
! 1110: /*
! 1111: NAME: OCINumberFromReal - OCINumber convert Real TO Number
! 1112: PARAMETERS:
! 1113: err (IN/OUT) - error handle. If there is an error, it is
! 1114: recorded in 'err' and this function returns OCI_ERROR.
! 1115: The error recorded in 'err' can be retrieved by calling
! 1116: OCIErrorGet().
! 1117: rnum (IN) - pointer to the floating point number to be converted
! 1118: rnum_length (IN) - size of the desired result, i.e.
! 1119: sizeof({float | double | long double})
! 1120: number (OUT) - given float converted to Oracle number
! 1121: DESCRIPTION:
! 1122: Native type conversion function. Converts a machine-native floating
! 1123: point type to an Oracle number.
! 1124: RETURNS:
! 1125: OCI_SUCCESS if the function completes successfully.
! 1126: OCI_INVALID_HANDLE if 'err' is NULL.
! 1127: OCI_ERROR if
! 1128: 'number' or 'rnum' is null
! 1129: 'rnum_length' is 0
! 1130: */
! 1131:
! 1132: /*----------------------------- OCINumberCmp --------------------------------*/
! 1133:
! 1134: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1135: sword OCINumberCmp(/*_ OCIError *err, CONST OCINumber *number1,
! 1136: CONST OCINumber *number2, sword *result _*/);
! 1137: #else /* ANSI C */
! 1138: sword OCINumberCmp( OCIError *err, CONST OCINumber *number1,
! 1139: CONST OCINumber *number2, sword *result );
! 1140: #endif
! 1141: /*
! 1142: NAME: OCINumberCmp - OCINumber CoMPare numbers
! 1143: PARAMETERS:
! 1144: err (IN/OUT) - error handle. If there is an error, it is
! 1145: recorded in 'err' and this function returns OCI_ERROR.
! 1146: The error recorded in 'err' can be retrieved by calling
! 1147: OCIErrorGet().
! 1148: number1, number2 (IN) - numbers to be compared
! 1149: result (OUT) - 0 if equal, negative if number1 < number2,
! 1150: positive if number1 > number2
! 1151: DESCRIPTION:
! 1152: The function OCINumberCmp compares two numbers.
! 1153: RETURNS:
! 1154: OCI_SUCCESS if the function completes successfully.
! 1155: OCI_INVALID_HANDLE if 'err' is NULL.
! 1156: OCI_ERROR if
! 1157: 'number1' or 'number2' or 'result' is null
! 1158: */
! 1159:
! 1160: /*---------------------------- OCINumberSign --------------------------------*/
! 1161:
! 1162: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1163: sword OCINumberSign(/*_ OCIError *err, CONST OCINumber *number,
! 1164: sword *result _*/);
! 1165: #else /* ANSI C */
! 1166: sword OCINumberSign( OCIError *err, CONST OCINumber *number,
! 1167: sword *result );
! 1168: #endif
! 1169: /*
! 1170: NAME: OCINumberSign - OCINumber obtains SiGN of an Oracle number
! 1171: PARAMETERS:
! 1172: err (IN/OUT) - error handle. If there is an error, it is
! 1173: recorded in 'err' and this function returns OCI_ERROR.
! 1174: The error recorded in 'err' can be retrieved by calling
! 1175: OCIErrorGet().
! 1176: number (IN) - number whose sign is returned
! 1177: result (OUT) - 0 if number == 0, -1 if number < 0,
! 1178: 1 if number > 0
! 1179: DESCRIPTION:
! 1180: Obtains sign of an Oracle number
! 1181: RETURNS:
! 1182: OCI_SUCCESS if the function completes successfully.
! 1183: OCI_INVALID_HANDLE if 'err' is NULL.
! 1184: OCI_ERROR if
! 1185: 'number' or 'result' is null
! 1186: */
! 1187:
! 1188: /*---------------------------- OCINumberIsZero ------------------------------*/
! 1189:
! 1190: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1191: sword OCINumberIsZero(/*_ OCIError *err, CONST OCINumber *number,
! 1192: boolean *result _*/);
! 1193: #else /* ANSI C */
! 1194: sword OCINumberIsZero( OCIError *err, CONST OCINumber *number,
! 1195: boolean *result );
! 1196: #endif
! 1197: /*
! 1198: NAME: OCINumberIsZero - OCINumber comparison with ZERo
! 1199: PARAMETERS:
! 1200: err (IN/OUT) - error handle. If there is an error, it is
! 1201: recorded in 'err' and this function returns OCI_ERROR.
! 1202: The error recorded in 'err' can be retrieved by calling
! 1203: OCIErrorGet().
! 1204: number (IN) - numbers to be compared
! 1205: result (OUT) - set to TRUE if equal to zero else FALSE
! 1206: DESCRIPTION:
! 1207: Test if the given number is equal to zero.
! 1208: RETURNS:
! 1209: OCI_SUCCESS if the function completes successfully.
! 1210: OCI_INVALID_HANDLE if 'err' is NULL.
! 1211: OCI_ERROR if
! 1212: 'number' or 'result' is null
! 1213: */
! 1214:
! 1215: /*---------------------------- OCINumberIsInt -------------------------------*/
! 1216:
! 1217: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1218: sword OCINumberIsInt(/*_ OCIError *err, CONST OCINumber *number,
! 1219: boolean *result _*/);
! 1220: #else /* ANSI C */
! 1221: sword OCINumberIsInt( OCIError *err, CONST OCINumber *number,
! 1222: boolean *result );
! 1223: #endif
! 1224: /*
! 1225: NAME: OCINumberIsInt - OCINumber Is Integer value.
! 1226: PARAMETERS:
! 1227: err (IN/OUT) - error handle. If there is an error, it is
! 1228: recorded in 'err' and this function returns OCI_ERROR.
! 1229: The error recorded in 'err' can be retrieved by calling
! 1230: OCIErrorGet().
! 1231: number (IN) - number to be tested
! 1232: result (OUT) - set to TRUE if integer value else FALSE
! 1233: DESCRIPTION:
! 1234: Test if the given number is an integer value.
! 1235: RETURNS:
! 1236: OCI_SUCCESS if the function completes successfully.
! 1237: OCI_INVALID_HANDLE if 'err' is NULL.
! 1238: OCI_ERROR if
! 1239: 'number' or 'result' is null
! 1240: */
! 1241:
! 1242: /*-------------------------- OCINumberAssign --------------------------------*/
! 1243:
! 1244: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1245: sword OCINumberAssign(/*_ OCIError *err, CONST OCINumber *from,
! 1246: OCINumber *to _*/);
! 1247: #else /* ANSI C */
! 1248: sword OCINumberAssign( OCIError *err, CONST OCINumber *from,
! 1249: OCINumber *to );
! 1250: #endif
! 1251: /*
! 1252: NAME: OCINumberAssign - OCINumber ASsiGn number
! 1253: PARAMETERS:
! 1254: err (IN/OUT) - error handle. If there is an error, it is
! 1255: recorded in 'err' and this function returns OCI_ERROR.
! 1256: The error recorded in 'err' can be retrieved by calling
! 1257: OCIErrorGet().
! 1258: from (IN) - number to be assigned
! 1259: to (OUT) - number copied into
! 1260: DESCRIPTION:
! 1261: Assign number 'from' to 'to'.
! 1262: RETURNS:
! 1263: OCI_SUCCESS if the function completes successfully.
! 1264: OCI_INVALID_HANDLE if 'err' is NULL.
! 1265: OCI_ERROR if
! 1266: 'from' or 'to' is null
! 1267: */
! 1268:
! 1269: /*----------------------------- OCINumberAbs --------------------------------*/
! 1270:
! 1271: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1272: sword OCINumberAbs(/*_ OCIError *err, CONST OCINumber *number,
! 1273: OCINumber *result _*/);
! 1274: #else /* ANSI C */
! 1275: sword OCINumberAbs( OCIError *err, CONST OCINumber *number,
! 1276: OCINumber *result );
! 1277: #endif
! 1278: /*
! 1279: NAME: OCINumberAbs - OCINumber compute ABSolute value
! 1280: PARAMETERS:
! 1281: err (IN/OUT) - error handle. If there is an error, it is
! 1282: recorded in 'err' and this function returns OCI_ERROR.
! 1283: The error recorded in 'err' can be retrieved by calling
! 1284: OCIErrorGet().
! 1285: number (IN) - input number
! 1286: result (OUT) - output which will contain the absolue value of the
! 1287: input number
! 1288: DESCRIPTION:
! 1289: Computes the absolute value of an Oracle number.
! 1290: RETURNS:
! 1291: OCI_SUCCESS if the function completes successfully.
! 1292: OCI_INVALID_HANDLE if 'err' is NULL.
! 1293: OCI_ERROR if
! 1294: any of the number arguments is null
! 1295: */
! 1296:
! 1297: /*---------------------------- OCINumberCeil --------------------------------*/
! 1298:
! 1299: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1300: sword OCINumberCeil(/*_ OCIError *err, CONST OCINumber *number,
! 1301: OCINumber *result _*/);
! 1302: #else /* ANSI C */
! 1303: sword OCINumberCeil( OCIError *err, CONST OCINumber *number,
! 1304: OCINumber *result );
! 1305: #endif
! 1306: /*
! 1307: NAME: OCINumberCeil - OCINumber compute the CEiL value of an Oracle number
! 1308: PARAMETERS:
! 1309: err (IN/OUT) - error handle. If there is an error, it is
! 1310: recorded in 'err' and this function returns OCI_ERROR.
! 1311: The error recorded in 'err' can be retrieved by calling
! 1312: OCIErrorGet().
! 1313: number (IN) - input number
! 1314: result (OUT) - output which will contain the ceil value of the
! 1315: input number
! 1316: DESCRIPTION:
! 1317: Computes the ceil value of an Oracle number.
! 1318: RETURNS:
! 1319: OCI_SUCCESS if the function completes successfully.
! 1320: OCI_INVALID_HANDLE if 'err' is NULL.
! 1321: OCI_ERROR if
! 1322: any of the number arguments is null
! 1323: */
! 1324:
! 1325: /*--------------------------- OCINumberFloor --------------------------------*/
! 1326:
! 1327: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1328: sword OCINumberFloor(/*_ OCIError *err, CONST OCINumber *number,
! 1329: OCINumber *result _*/);
! 1330: #else /* ANSI C */
! 1331: sword OCINumberFloor( OCIError *err, CONST OCINumber *number,
! 1332: OCINumber *result );
! 1333: #endif
! 1334: /*
! 1335: NAME: OCINumberFloor - OCINumber compute the FLooR value of an Oracle number
! 1336: PARAMETERS:
! 1337: err (IN/OUT) - error handle. If there is an error, it is
! 1338: recorded in 'err' and this function returns OCI_ERROR.
! 1339: The error recorded in 'err' can be retrieved by calling
! 1340: OCIErrorGet().
! 1341: number (IN) - input number
! 1342: result (OUT) - output which will contain the floor value of the
! 1343: input number
! 1344: DESCRIPTION:
! 1345: Computes the floor value of an Oracle number.
! 1346: RETURNS:
! 1347: OCI_SUCCESS if the function completes successfully.
! 1348: OCI_INVALID_HANDLE if 'err' is NULL.
! 1349: OCI_ERROR if
! 1350: any of the number arguments is null
! 1351: */
! 1352:
! 1353: /*----------------------------- OCINumberSqrt -------------------------------*/
! 1354:
! 1355: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1356: sword OCINumberSqrt(/*_ OCIError *err, CONST OCINumber *number,
! 1357: OCINumber *result _*/);
! 1358: #else /* ANSI C */
! 1359: sword OCINumberSqrt( OCIError *err, CONST OCINumber *number,
! 1360: OCINumber *result );
! 1361: #endif
! 1362: /*
! 1363: NAME: OCINumberSqrt - OCINumber compute the SQuare Root of an Oracle number
! 1364: PARAMETERS:
! 1365: err (IN/OUT) - error handle. If there is an error, it is
! 1366: recorded in 'err' and this function returns OCI_ERROR.
! 1367: The error recorded in 'err' can be retrieved by calling
! 1368: OCIErrorGet().
! 1369: number (IN) - input number
! 1370: result (OUT) - output which will contain the square root of the
! 1371: input number
! 1372: DESCRIPTION:
! 1373: Computes the square root of an Oracle number.
! 1374: RETURNS:
! 1375: OCI_SUCCESS if the function completes successfully.
! 1376: OCI_INVALID_HANDLE if 'err' is NULL.
! 1377: OCI_ERROR if
! 1378: any of the number arguments is null
! 1379: 'number' is negative
! 1380: */
! 1381:
! 1382: /*--------------------------- OCINumberTrunc --------------------------------*/
! 1383:
! 1384: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1385: sword OCINumberTrunc(/*_ OCIError *err, CONST OCINumber *number,
! 1386: sword decplace, OCINumber *result _*/);
! 1387: #else /* ANSI C */
! 1388: sword OCINumberTrunc( OCIError *err, CONST OCINumber *number,
! 1389: sword decplace, OCINumber *result );
! 1390: #endif
! 1391: /*
! 1392: NAME: OCINumberTrunc - OCINumber TRUncate an Oracle number at a
! 1393: specified decimal place
! 1394: PARAMETERS:
! 1395: err (IN/OUT) - error handle. If there is an error, it is
! 1396: recorded in 'err' and this function returns OCI_ERROR.
! 1397: The error recorded in 'err' can be retrieved by calling
! 1398: OCIErrorGet().
! 1399: number (IN) - input number
! 1400: decplace (IN) - number of decimal digits to the right of the
! 1401: decimal point to truncate at. Negative values are allowed.
! 1402: result (OUT) - output of truncation
! 1403: DESCRIPTION:
! 1404: Truncate an Oracle number at a specified decimal place
! 1405: RETURNS:
! 1406: OCI_SUCCESS if the function completes successfully.
! 1407: OCI_INVALID_HANDLE if 'err' is NULL.
! 1408: OCI_ERROR if
! 1409: any of the number arguments is null
! 1410: */
! 1411:
! 1412: /*----------------------------- OCINumberPower ------------------------------*/
! 1413:
! 1414: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1415: sword OCINumberPower(/*_ OCIError *err, CONST OCINumber *base,
! 1416: CONST OCINumber *number, OCINumber *result _*/);
! 1417: #else /* ANSI C */
! 1418: sword OCINumberPower( OCIError *err, CONST OCINumber *base,
! 1419: CONST OCINumber *number, OCINumber *result );
! 1420: #endif
! 1421: /*
! 1422: NAME: OCINumberPower - OCINumber takes an arbitary Base to an
! 1423: arbitary Power
! 1424: PARAMETERS:
! 1425: err (IN/OUT) - error handle. If there is an error, it is
! 1426: recorded in 'err' and this function returns OCI_ERROR.
! 1427: The error recorded in 'err' can be retrieved by calling
! 1428: OCIErrorGet().
! 1429: base (IN) - base of the exponentiation
! 1430: number (IN) - exponent to which the base is to be raised
! 1431: result (OUT) - output of exponentiation
! 1432: DESCRIPTION:
! 1433: Takes an arbitary base to an arbitary power.
! 1434: RETURNS:
! 1435: OCI_SUCCESS if the function completes successfully.
! 1436: OCI_INVALID_HANDLE if 'err' is NULL.
! 1437: OCI_ERROR if
! 1438: any of the number arguments is null
! 1439: */
! 1440:
! 1441: /*--------------------------- OCINumberRound --------------------------------*/
! 1442:
! 1443: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1444: sword OCINumberRound(/*_ OCIError *err, CONST OCINumber *number,
! 1445: sword decplace, OCINumber *result _*/);
! 1446: #else /* ANSI C */
! 1447: sword OCINumberRound( OCIError *err, CONST OCINumber *number,
! 1448: sword decplace, OCINumber *result );
! 1449: #endif
! 1450: /*
! 1451: NAME: OCINumberRound - OCINumber ROUnds an Oracle number to a specified
! 1452: decimal place
! 1453: PARAMETERS:
! 1454: err (IN/OUT) - error handle. If there is an error, it is
! 1455: recorded in 'err' and this function returns OCI_ERROR.
! 1456: The error recorded in 'err' can be retrieved by calling
! 1457: OCIErrorGet().
! 1458: number (IN) - round this number and return result in 'result'
! 1459: decplace (IN) - number of decimal digits to the right of the
! 1460: decimal point to round to. Negative values are allowed.
! 1461: result (OUT) - output of rounding
! 1462: DESCRIPTION:
! 1463: Rounds an Oracle number to a specified decimal place
! 1464: RETURNS:
! 1465: OCI_SUCCESS if the function completes successfully.
! 1466: OCI_INVALID_HANDLE if 'err' is NULL.
! 1467: OCI_ERROR if
! 1468: any of the number arguments is null
! 1469: */
! 1470:
! 1471: /*--------------------------- OCINumberPrec ---------------------------------*/
! 1472:
! 1473: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1474: sword OCINumberPrec(/*_ OCIError *err, CONST OCINumber *number,
! 1475: eword nDigs, OCINumber *result _*/);
! 1476: #else /* ANSI C */
! 1477: sword OCINumberPrec( OCIError *err, CONST OCINumber *number,
! 1478: eword nDigs, OCINumber *result );
! 1479: #endif
! 1480: /*
! 1481: NAME: OCINumberPrec - Rounds an Oracle number to a specified number of
! 1482: decimal digits.
! 1483: PARAMETERS:
! 1484: err (IN/OUT) - error handle. If there is an error, it is
! 1485: recorded in 'err' and this function returns OCI_ERROR.
! 1486: The error recorded in 'err' can be retrieved by calling
! 1487: OCIErrorGet().
! 1488: number (IN) - number for which to set precision.
! 1489: nDig (IN) - number of decimal digits desired in the result.
! 1490: result (OUT) - result.
! 1491: DESCRIPTION:
! 1492: Performs a floating point round with respect to the number
! 1493: of digits.
! 1494: RETURNS:
! 1495: OCI_SUCCESS if the function completes successfully.
! 1496: OCI_INVALID_HANDLE if 'err' is NULL.
! 1497: OCI_ERROR if
! 1498: any of the number arguments is null
! 1499: */
! 1500:
! 1501: /*----------------------------- OCINumberSin --------------------------------*/
! 1502:
! 1503: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1504: sword OCINumberSin(/*_ OCIError *err, CONST OCINumber *number,
! 1505: OCINumber *result _*/);
! 1506: #else /* ANSI C */
! 1507: sword OCINumberSin( OCIError *err, CONST OCINumber *number,
! 1508: OCINumber *result );
! 1509: #endif
! 1510: /*
! 1511: NAME: OCINumberSin - OCINumber takes the SINe of an Oracle number
! 1512: PARAMETERS:
! 1513: err (IN/OUT) - error handle. If there is an error, it is
! 1514: recorded in 'err' and this function returns OCI_ERROR.
! 1515: The error recorded in 'err' can be retrieved by calling
! 1516: OCIErrorGet().
! 1517: number (IN) - argument of the sine in radians
! 1518: result (OUT) - result of the sine
! 1519: DESCRIPTION:
! 1520: Takes the sine in radians of an Oracle number.
! 1521: RETURNS:
! 1522: OCI_SUCCESS if the function completes successfully.
! 1523: OCI_INVALID_HANDLE if 'err' is NULL.
! 1524: OCI_ERROR if
! 1525: any of the number arguments is null
! 1526: */
! 1527:
! 1528: /*-------------------------- OCINumberArcSin --------------------------------*/
! 1529:
! 1530: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1531: sword OCINumberArcSin(/*_ OCIError *err, CONST OCINumber *number,
! 1532: OCINumber *result _*/);
! 1533: #else /* ANSI C */
! 1534: sword OCINumberArcSin( OCIError *err, CONST OCINumber *number,
! 1535: OCINumber *result );
! 1536: #endif
! 1537: /*
! 1538: NAME: OCINumberArcSin - OCINumber takes the Arc SINe of an Oracle number
! 1539: PARAMETERS:
! 1540: err (IN/OUT) - error handle. If there is an error, it is
! 1541: recorded in 'err' and this function returns OCI_ERROR.
! 1542: The error recorded in 'err' can be retrieved by calling
! 1543: OCIErrorGet().
! 1544: number (IN) - argument of the arc sine
! 1545: result (OUT) - result of the arc sine in radians
! 1546: DESCRIPTION:
! 1547: Takes the arc sine in radians of an Oracle number.
! 1548: RETURNS:
! 1549: OCI_SUCCESS if the function completes successfully.
! 1550: OCI_INVALID_HANDLE if 'err' is NULL.
! 1551: OCI_ERROR if
! 1552: any of the number arguments is null
! 1553: 'number' is < -1 or 'number' is > 1.
! 1554: */
! 1555:
! 1556: /*-------------------------- OCINumberHypSin --------------------------------*/
! 1557:
! 1558: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1559: sword OCINumberHypSin(/*_ OCIError *err, CONST OCINumber *number,
! 1560: OCINumber *result _*/);
! 1561: #else /* ANSI C */
! 1562: sword OCINumberHypSin( OCIError *err, CONST OCINumber *number,
! 1563: OCINumber *result );
! 1564: #endif
! 1565: /*
! 1566: NAME: OCINumberHypSin - OCINumber takes the SiNe Hyperbolic of an
! 1567: Oracle number
! 1568: PARAMETERS:
! 1569: err (IN/OUT) - error handle. If there is an error, it is
! 1570: recorded in 'err' and this function returns OCI_ERROR.
! 1571: The error recorded in 'err' can be retrieved by calling
! 1572: OCIErrorGet().
! 1573: number (IN) - argument of the sine hyperbolic
! 1574: result (OUT) - result of the sine hyperbolic
! 1575: DESCRIPTION:
! 1576: Takes the hyperbolic sine of an Oracle number.
! 1577: RETURNS:
! 1578: OCI_SUCCESS if the function completes successfully.
! 1579: OCI_INVALID_HANDLE if 'err' is NULL.
! 1580: OCI_ERROR if
! 1581: any of the number arguments is null
! 1582: NOTES:
! 1583: An Oracle number overflow causes an unpredictable result value.
! 1584: */
! 1585:
! 1586: /*----------------------------- OCINumberCos --------------------------------*/
! 1587:
! 1588: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1589: sword OCINumberCos(/*_ OCIError *err, CONST OCINumber *number,
! 1590: OCINumber *result _*/);
! 1591: #else /* ANSI C */
! 1592: sword OCINumberCos( OCIError *err, CONST OCINumber *number,
! 1593: OCINumber *result );
! 1594: #endif
! 1595: /*
! 1596: NAME: OCINumberCos - OCINumber takes the COSine of an Oracle number
! 1597: PARAMETERS:
! 1598: err (IN/OUT) - error handle. If there is an error, it is
! 1599: recorded in 'err' and this function returns OCI_ERROR.
! 1600: The error recorded in 'err' can be retrieved by calling
! 1601: OCIErrorGet().
! 1602: number (IN) - argument of the cosine in radians
! 1603: result (OUT) - result of the cosine
! 1604: DESCRIPTION:
! 1605: Takes the cosine in radians of an Oracle number.
! 1606: RETURNS:
! 1607: OCI_SUCCESS if the function completes successfully.
! 1608: OCI_INVALID_HANDLE if 'err' is NULL.
! 1609: OCI_ERROR if
! 1610: any of the number arguments is null
! 1611: */
! 1612:
! 1613: /*-------------------------- OCINumberArcCos --------------------------------*/
! 1614:
! 1615: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1616: sword OCINumberArcCos(/*_ OCIError *err, CONST OCINumber *number,
! 1617: OCINumber *result _*/);
! 1618: #else /* ANSI C */
! 1619: sword OCINumberArcCos( OCIError *err, CONST OCINumber *number,
! 1620: OCINumber *result );
! 1621: #endif
! 1622: /*
! 1623: NAME: OCINumberArcCos - OCINumber takes the Arc COSine of an Oracle number
! 1624: PARAMETERS:
! 1625: err (IN/OUT) - error handle. If there is an error, it is
! 1626: recorded in 'err' and this function returns OCI_ERROR.
! 1627: The error recorded in 'err' can be retrieved by calling
! 1628: OCIErrorGet().
! 1629: number (IN) - argument of the arc cosine
! 1630: result (OUT) - result of the arc cosine in radians
! 1631: DESCRIPTION:
! 1632: Takes the arc cosine in radians of an Oracle number.
! 1633: RETURNS:
! 1634: OCI_SUCCESS if the function completes successfully.
! 1635: OCI_INVALID_HANDLE if 'err' is NULL.
! 1636: OCI_ERROR if
! 1637: any of the number arguments is null
! 1638: 'number' is < -1 or 'number' is > 1.
! 1639: */
! 1640:
! 1641: /*-------------------------- OCINumberHypCos --------------------------------*/
! 1642:
! 1643: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1644: sword OCINumberHypCos(/*_ OCIError *err, CONST OCINumber *number,
! 1645: OCINumber *result _*/);
! 1646: #else /* ANSI C */
! 1647: sword OCINumberHypCos( OCIError *err, CONST OCINumber *number,
! 1648: OCINumber *result );
! 1649: #endif
! 1650: /*
! 1651: NAME: OCINumberHypCos - OCINumber takes the CoSine Hyperbolic of an
! 1652: Oracle number
! 1653: PARAMETERS:
! 1654: err (IN/OUT) - error handle. If there is an error, it is
! 1655: recorded in 'err' and this function returns OCI_ERROR.
! 1656: The error recorded in 'err' can be retrieved by calling
! 1657: OCIErrorGet().
! 1658: number (IN) - argument of the cosine hyperbolic
! 1659: result (OUT) - result of the cosine hyperbolic
! 1660: DESCRIPTION:
! 1661: Takes the hyperbolic cosine of an Oracle number.
! 1662: RETURNS:
! 1663: OCI_SUCCESS if the function completes successfully.
! 1664: OCI_INVALID_HANDLE if 'err' is NULL.
! 1665: OCI_ERROR if
! 1666: any of the number arguments is null
! 1667: NOTES:
! 1668: An Oracle number overflow causes an unpredictable result value.
! 1669: */
! 1670:
! 1671: /*----------------------------- OCINumberTan --------------------------------*/
! 1672:
! 1673: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1674: sword OCINumberTan(/*_ OCIError *err, CONST OCINumber *number,
! 1675: OCINumber *result _*/);
! 1676: #else /* ANSI C */
! 1677: sword OCINumberTan( OCIError *err, CONST OCINumber *number,
! 1678: OCINumber *result );
! 1679: #endif
! 1680: /*
! 1681: NAME: OCINumberTan - OCINumber takes the TANgent of an Oracle number
! 1682: PARAMETERS:
! 1683: err (IN/OUT) - error handle. If there is an error, it is
! 1684: recorded in 'err' and this function returns OCI_ERROR.
! 1685: The error recorded in 'err' can be retrieved by calling
! 1686: OCIErrorGet().
! 1687: number (IN) - argument of the tangent in radians
! 1688: result (OUT) - result of the tangent
! 1689: DESCRIPTION:
! 1690: Takes the tangent in radians of an Oracle number.
! 1691: RETURNS:
! 1692: OCI_SUCCESS if the function completes successfully.
! 1693: OCI_INVALID_HANDLE if 'err' is NULL.
! 1694: OCI_ERROR if
! 1695: any of the number arguments is null
! 1696: */
! 1697:
! 1698: /*-------------------------- OCINumberArcTan --------------------------------*/
! 1699:
! 1700: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1701: sword OCINumberArcTan(/*_ OCIError *err, CONST OCINumber *number,
! 1702: OCINumber *result _*/);
! 1703: #else /* ANSI C */
! 1704: sword OCINumberArcTan( OCIError *err, CONST OCINumber *number,
! 1705: OCINumber *result );
! 1706: #endif
! 1707: /*
! 1708: NAME: OCINumberArcTan - OCINumber takes the Arc TANgent of an Oracle number
! 1709: PARAMETERS:
! 1710: err (IN/OUT) - error handle. If there is an error, it is
! 1711: recorded in 'err' and this function returns OCI_ERROR.
! 1712: The error recorded in 'err' can be retrieved by calling
! 1713: OCIErrorGet().
! 1714: number (IN) - argument of the arc tangent
! 1715: result (OUT) - result of the arc tangent in radians
! 1716: DESCRIPTION:
! 1717: Takes the arc tangent in radians of an Oracle number.
! 1718: RETURNS:
! 1719: OCI_SUCCESS if the function completes successfully.
! 1720: OCI_INVALID_HANDLE if 'err' is NULL.
! 1721: OCI_ERROR if
! 1722: any of the number arguments is null
! 1723: */
! 1724:
! 1725: /*------------------------ OCINumberArcTan2 ---------------------------------*/
! 1726:
! 1727: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1728: sword OCINumberArcTan2(/*_ OCIError *err, CONST OCINumber *number1,
! 1729: CONST OCINumber *number2, OCINumber *result _*/);
! 1730: #else /* ANSI C */
! 1731: sword OCINumberArcTan2( OCIError *err, CONST OCINumber *number1,
! 1732: CONST OCINumber *number2, OCINumber *result );
! 1733: #endif
! 1734: /*
! 1735: NAME: OCINumberArcTan2 - OCINumber takes the ATan2 of 2 Oracle numbers
! 1736: PARAMETERS:
! 1737: err (IN/OUT) - error handle. If there is an error, it is
! 1738: recorded in 'err' and this function returns OCI_ERROR.
! 1739: The error recorded in 'err' can be retrieved by calling
! 1740: OCIErrorGet().
! 1741: number1 (IN) - first argument of atan2(y,x) function which
! 1742: corresponds to 'y' parameter in the function
! 1743: number2 (IN) - second argument of atan2(y,x) function which
! 1744: corresponds to 'x' parameter in the function
! 1745: result (OUT) - result of the atan2() in radians
! 1746: DESCRIPTION:
! 1747: Takes the atan2(number1, number2).
! 1748: RETURNS:
! 1749: OCI_SUCCESS if the function completes successfully.
! 1750: OCI_INVALID_HANDLE if 'err' is NULL.
! 1751: OCI_ERROR if
! 1752: any of the number arguments is null
! 1753: 'number2' is 0
! 1754: */
! 1755:
! 1756: /*----------------------------- OCINumberHypTan -----------------------------*/
! 1757:
! 1758: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1759: sword OCINumberHypTan(/*_ OCIError *err, CONST OCINumber *number,
! 1760: OCINumber *result _*/);
! 1761: #else /* ANSI C */
! 1762: sword OCINumberHypTan( OCIError *err, CONST OCINumber *number,
! 1763: OCINumber *result );
! 1764: #endif
! 1765: /*
! 1766: NAME: OCINumberHypTan - OCINumber takes the TaNgent Hyperbolic of an Oracle
! 1767: number
! 1768: PARAMETERS:
! 1769: err (IN/OUT) - error handle. If there is an error, it is
! 1770: recorded in 'err' and this function returns OCI_ERROR.
! 1771: The error recorded in 'err' can be retrieved by calling
! 1772: OCIErrorGet().
! 1773: number (IN) - argument of the tangent hyperbolic
! 1774: result (OUT) - result of the tangent hyperbolic
! 1775: DESCRIPTION:
! 1776: Takes the hyperbolic tangent of an Oracle number.
! 1777: RETURNS:
! 1778: OCI_SUCCESS if the function completes successfully.
! 1779: OCI_INVALID_HANDLE if 'err' is NULL.
! 1780: OCI_ERROR if
! 1781: any of the number arguments is null
! 1782: NOTES:
! 1783: An Oracle number overflow causes an unpredictable result value.
! 1784: */
! 1785:
! 1786: /*--------------------------- OCINumberExp ----------------------------------*/
! 1787:
! 1788: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1789: sword OCINumberExp(/*_ OCIError *err, CONST OCINumber *number,
! 1790: OCINumber *result _*/);
! 1791: #else /* ANSI C */
! 1792: sword OCINumberExp( OCIError *err, CONST OCINumber *number,
! 1793: OCINumber *result );
! 1794: #endif
! 1795: /*
! 1796: NAME: OCINumberExp - OCINumber EXPonential
! 1797: PARAMETERS:
! 1798: err (IN/OUT) - error handle. If there is an error, it is
! 1799: recorded in 'err' and this function returns OCI_ERROR.
! 1800: The error recorded in 'err' can be retrieved by calling
! 1801: OCIErrorGet().
! 1802: number (IN) - e raised to this Oracle number power
! 1803: result (OUT) - output of exponentiation
! 1804: DESCRIPTION:
! 1805: Raises e to the specified Oracle number power
! 1806: RETURNS:
! 1807: OCI_SUCCESS if the function completes successfully.
! 1808: OCI_INVALID_HANDLE if 'err' is NULL.
! 1809: OCI_ERROR if
! 1810: any of the number arguments is null
! 1811: */
! 1812:
! 1813: /*----------------------------- OCINumberLn ---------------------------------*/
! 1814:
! 1815: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1816: sword OCINumberLn(/*_ OCIError *err, CONST OCINumber *number,
! 1817: OCINumber *result _*/);
! 1818: #else /* ANSI C */
! 1819: sword OCINumberLn( OCIError *err, CONST OCINumber *number,
! 1820: OCINumber *result );
! 1821: #endif
! 1822: /*
! 1823: NAME: OCINumberLn - OCINumber Logarithm Natural
! 1824: PARAMETERS:
! 1825: err (IN/OUT) - error handle. If there is an error, it is
! 1826: recorded in 'err' and this function returns OCI_ERROR.
! 1827: The error recorded in 'err' can be retrieved by calling
! 1828: OCIErrorGet().
! 1829: number (IN) - logarithm of this number is computed
! 1830: result (OUT) - logarithm result
! 1831: DESCRIPTION:
! 1832: Takes the logarithm of the given Oracle number with respect
! 1833: to the given base.
! 1834: RETURNS:
! 1835: OCI_SUCCESS if the function completes successfully.
! 1836: OCI_INVALID_HANDLE if 'err' is NULL.
! 1837: OCI_ERROR if
! 1838: any of the number arguments is null
! 1839: 'number' is <= 0
! 1840: */
! 1841:
! 1842: /*----------------------------- OCINumberLog --------------------------------*/
! 1843:
! 1844: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1845: sword OCINumberLog(/*_ OCIError *err, CONST OCINumber *base,
! 1846: CONST OCINumber *number, OCINumber *result _*/);
! 1847: #else /* ANSI C */
! 1848: sword OCINumberLog( OCIError *err, CONST OCINumber *base,
! 1849: CONST OCINumber *number, OCINumber *result );
! 1850: #endif
! 1851: /*
! 1852: NAME: OCINumberLog - OCINumber LOGarithm any base
! 1853: PARAMETERS:
! 1854: err (IN/OUT) - error handle. If there is an error, it is
! 1855: recorded in 'err' and this function returns OCI_ERROR.
! 1856: The error recorded in 'err' can be retrieved by calling
! 1857: OCIErrorGet().
! 1858: base (IN) - base of the logarithm
! 1859: number (IN) - opearnd
! 1860: result (OUT) - logarithm result
! 1861: DESCRIPTION:
! 1862: Takes the logarithm with the specified base of an Oracle number.
! 1863: RETURNS:
! 1864: OCI_SUCCESS if the function completes successfully.
! 1865: OCI_INVALID_HANDLE if 'err' is NULL.
! 1866: OCI_ERROR if
! 1867: any of the number arguments is null
! 1868: 'number' is <= 0
! 1869: 'base' is <= 0
! 1870: */
! 1871:
! 1872: /*****************************************************************************/
! 1873: /* ORACLE DATE TYPE */
! 1874: /*****************************************************************************/
! 1875:
! 1876: struct OCITime
! 1877: {
! 1878: ub1 OCITimeHH; /* hours; range is 0 <= hours <=23 */
! 1879: ub1 OCITimeMI; /* minutes; range is 0 <= minutes <= 59 */
! 1880: ub1 OCITimeSS; /* seconds; range is 0 <= seconds <= 59 */
! 1881: };
! 1882: typedef struct OCITime OCITime;
! 1883:
! 1884: /*
! 1885: * OCITime - OCI TiMe portion of date
! 1886: *
! 1887: * This structure should be treated as an opaque structure as the format
! 1888: * of this structure may change. Use OCIDateGetTime/OCIDateSetTime
! 1889: * to manipulate time portion of OCIDate.
! 1890: */
! 1891:
! 1892: struct OCIDate
! 1893: {
! 1894: sb2 OCIDateYYYY; /* gregorian year; range is -4712 <= year <= 9999 */
! 1895: ub1 OCIDateMM; /* month; range is 1 <= month < 12 */
! 1896: ub1 OCIDateDD; /* day; range is 1 <= day <= 31 */
! 1897: OCITime OCIDateTime; /* time */
! 1898: };
! 1899: typedef struct OCIDate OCIDate;
! 1900:
! 1901: /*
! 1902: * OCIDate - OCI oracle Date representation in C
! 1903: *
! 1904: * OCIDate represents the C mapping of Oracle date.
! 1905: *
! 1906: * This structure should be treated as an opaque structure as the format
! 1907: * of this structure may change. Use OCIDateGetDate/OCIDateSetDate
! 1908: * to access/initialize OCIDate.
! 1909: *
! 1910: * For binding variables of type OCIDate in OCI calls (OCIBindByName(),
! 1911: * OCIBindByPos(), and OCIDefineByPos()) use the type code SQLT_ODT.
! 1912: */
! 1913:
! 1914: /*
! 1915: EXAMPLE
! 1916:
! 1917: The following example shows how to manipulate an attribute of type
! 1918: oracle date.
! 1919:
! 1920: #define FMT "Month dd, YYYY, HH:MI A.M."
! 1921: #define LANG "American"
! 1922:
! 1923: struct person
! 1924: {
! 1925: OCIDate start_date;
! 1926: };
! 1927: typedef struct person person;
! 1928:
! 1929: OCIError *err;
! 1930: person *joe;
! 1931: sword status; /o error status o/
! 1932:
! 1933: /o See oci.h for an example of how to initialize OCIError.
! 1934: o For this example, assume the OCIEnv and OCIError has been
! 1935: o initialized.
! 1936: o/
! 1937:
! 1938: /o Pin joe person object in the object cache. See ori.h
! 1939: o for an example on pinning objects. For this example, assume that
! 1940: o joe is pointing to the pinned object.
! 1941: o/
! 1942:
! 1943: /o set the start date of joe o/
! 1944: OCIDateSetTime(&joe->start_date, 8, 0, 0);
! 1945: OCIDateSetDate(&joe->start_date, 1990, 10, 5);
! 1946:
! 1947: /o check if the date is valid o/
! 1948: uword invalid;
! 1949: if (OCIDateCheck(err, &joe->start_date, &invalid) != OCI_SUCCESS)
! 1950: /o error handling code o/
! 1951: if (invalid)
! 1952: /o error handling code o/
! 1953:
! 1954: /o convert date for display purposes o/
! 1955: char str[100];
! 1956: ub4 strlen = sizeof(str);
! 1957: if (OCIDateToText(err, &joe->start_date, FMT, sizeof(FMT)-1, LANG,
! 1958: sizeof(LANG)-1, &strlen, str) != OCI_SUCCESS)
! 1959: /o error handling code o/
! 1960:
! 1961: */
! 1962:
! 1963: /*--------------------------- OCIDateGetTime --------------------------------*/
! 1964: /* void OCIDateGetTime(/o_ CONST OCIDate *date, ub1 *hour, ub1 *min,
! 1965: ub1 *sec _o/); */
! 1966: #define OCIDateGetTime(date, hour, min, sec) \
! 1967: { \
! 1968: *hour = (date)->OCIDateTime.OCITimeHH; \
! 1969: *min = (date)->OCIDateTime.OCITimeMI; \
! 1970: *sec = (date)->OCIDateTime.OCITimeSS; \
! 1971: }
! 1972: /*
! 1973: NAME: OCIDateGetTime - OCIDate Get Time portion of date
! 1974: PARAMETERS:
! 1975: date (IN) - Oracle date whose time data is retrieved
! 1976: hour (OUT) - hour value returned
! 1977: min (OUT) - minute value returned
! 1978: sec (OUT) - second value returned
! 1979: DESCRIPTION:
! 1980: Return time inforamtion stored in the given date. The time
! 1981: information returned is: hour, minute and seconds.
! 1982: RETURNS:
! 1983: NONE
! 1984: */
! 1985:
! 1986: /*--------------------------- OCIDateGetDate --------------------------------*/
! 1987: /* void OCIDateGetDate(/o_ CONST OCIDate *date, sb2 *year, ub1 *month,
! 1988: ub1 *day _o/); */
! 1989: #define OCIDateGetDate(date, year, month, day) \
! 1990: { \
! 1991: *year = (date)->OCIDateYYYY; \
! 1992: *month = (date)->OCIDateMM; \
! 1993: *day = (date)->OCIDateDD; \
! 1994: }
! 1995: /*
! 1996: NAME: OCIDateGetDate - OCIDate Get Date (year, month, day) portion of date
! 1997: PARAMETERS:
! 1998: date (IN) - Oracle date whose year, month, day data is retrieved
! 1999: year (OUT) - year value returned
! 2000: month (OUT) - month value returned
! 2001: day (OUT) - day value returned
! 2002: DESCRIPTION:
! 2003: Return year, month, day inforamtion stored in the given date.
! 2004: RETURNS:
! 2005: NONE
! 2006: */
! 2007:
! 2008: /*--------------------------- OCIDateSetTime --------------------------------*/
! 2009: /* void OCIDateSetTime(/o_ OCIDate *date, ub1 hour, ub1 min,
! 2010: ub1 sec _o/); */
! 2011: #define OCIDateSetTime(date, hour, min, sec) \
! 2012: { \
! 2013: (date)->OCIDateTime.OCITimeHH = hour; \
! 2014: (date)->OCIDateTime.OCITimeMI = min; \
! 2015: (date)->OCIDateTime.OCITimeSS = sec; \
! 2016: }
! 2017: /*
! 2018: NAME: OCIDateSetTime - OCIDate Set Time portion of date
! 2019: PARAMETERS:
! 2020: date (OUT) - Oracle date whose time data is set
! 2021: hour (IN) - hour value to be set
! 2022: min (IN) - minute value to be set
! 2023: sec (IN) - second value to be set
! 2024: DESCRIPTION:
! 2025: Set the date with the given time inforamtion.
! 2026: RETURNS:
! 2027: NONE
! 2028: */
! 2029:
! 2030: /*--------------------------- OCIDateSetDate --------------------------------*/
! 2031: /* void OCIDateSetDate(/o_ OCIDate *date, sb2 year, ub1 month, ub1 day _o/); */
! 2032: #define OCIDateSetDate(date, year, month, day) \
! 2033: { \
! 2034: (date)->OCIDateYYYY = year; \
! 2035: (date)->OCIDateMM = month; \
! 2036: (date)->OCIDateDD = day; \
! 2037: }
! 2038: /*
! 2039: NAME: OCIDateSetDate - OCIDate Set Date (year, month, day) portion of date
! 2040: PARAMETERS:
! 2041: date (IN) - Oracle date whose year, month, day data is set
! 2042: year (OUT) - year value to be set
! 2043: month (OUT) - month value to be set
! 2044: day (OUT) - day value to be set
! 2045: DESCRIPTION:
! 2046: Set the date with the given year, month, day inforamtion.
! 2047: RETURNS:
! 2048: NONE
! 2049: */
! 2050:
! 2051: /*--------------------------- OCIDateAssign ---------------------------------*/
! 2052:
! 2053: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2054: sword OCIDateAssign(/*_ OCIError *err, CONST OCIDate *from,
! 2055: OCIDate *to _*/);
! 2056: #else /* ANSI C */
! 2057: sword OCIDateAssign( OCIError *err, CONST OCIDate *from,
! 2058: OCIDate *to );
! 2059: #endif
! 2060: /*
! 2061: NAME: OCIDateAssign - OCIDate Assignment
! 2062: PARAMETERS:
! 2063: err (IN/OUT) - error handle. If there is an error, it is
! 2064: recorded in 'err' and this function returns OCI_ERROR.
! 2065: The error recorded in 'err' can be retrieved by calling
! 2066: OCIErrorGet().
! 2067: from (IN) - date to be assigned
! 2068: to (OUT) - lhs of assignment
! 2069: DESCRIPTION:
! 2070: Performs date assignment.
! 2071: RETURNS:
! 2072: OCI_SUCCESS
! 2073: */
! 2074:
! 2075: /*--------------------------- OCIDateToText ---------------------------------*/
! 2076:
! 2077: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2078: sword OCIDateToText(/*_ OCIError *err, CONST OCIDate *date,
! 2079: CONST text *fmt, ub1 fmt_length,
! 2080: CONST text *lang_name, ub4 lang_length,
! 2081: ub4 *buf_size, text *buf _*/);
! 2082: #else /* ANSI C */
! 2083: sword OCIDateToText( OCIError *err, CONST OCIDate *date,
! 2084: CONST text *fmt, ub1 fmt_length,
! 2085: CONST text *lang_name, ub4 lang_length,
! 2086: ub4 *buf_size, text *buf );
! 2087: #endif
! 2088: /*
! 2089: NAME: OCIDateToText - OCIDate convert date TO String
! 2090: PARAMETERS:
! 2091: err (IN/OUT) - error handle. If there is an error, it is
! 2092: recorded in 'err' and this function returns OCI_ERROR.
! 2093: The error recorded in 'err' can be retrieved by calling
! 2094: OCIErrorGet().
! 2095: date (IN) - Oracle date to be converted
! 2096: fmt (IN) - conversion format, if null string pointer (text*)0, then
! 2097: the date is converted to a character string in the
! 2098: date format "DD-MON-YY".
! 2099: fmt_length (IN) - length of the 'fmt' parameter
! 2100: lang_name (IN) - specifies the language in which the names and
! 2101: abbreviations of months and days are returned;
! 2102: default language of session is used if 'lang_name'
! 2103: is null i.e. (text *)0
! 2104: lang_length (IN) - length of the 'nls_params' parameter
! 2105: buf_size (IN/OUT) - size of the buffer; size of the resulting string
! 2106: is returned via this parameter
! 2107: buf (OUT) - buffer into which the converted string is placed
! 2108: DESCRIPTION:
! 2109: Converts the given date to a string according to the specified format.
! 2110: Refer to "TO_DATE" conversion function described in
! 2111: "Oracle SQL Language Reference Manual" for a description of format
! 2112: and NLS arguments. The converted null-terminated date string is
! 2113: stored in the buffer 'buf'.
! 2114:
! 2115: An error is reported upon overflow, e.g. trying to convert a number
! 2116: of value 10 using format '9' causes an overflow.
! 2117: RETURNS:
! 2118: OCI_SUCCESS if the function completes successfully.
! 2119: OCI_INVALID_HANDLE if 'err' is NULL.
! 2120: OCI_ERROR if
! 2121: buffer too small
! 2122: invalid format
! 2123: unknown language
! 2124: overflow error
! 2125: */
! 2126:
! 2127: /*---------------------------- OCIDateFromText ------------------------------*/
! 2128:
! 2129: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2130: sword OCIDateFromText(/*_ OCIError *err, CONST text *date_str,
! 2131: ub4 d_str_length, CONST text *fmt, ub1 fmt_length,
! 2132: CONST text *lang_name, ub4 lang_length,
! 2133: OCIDate *date _*/);
! 2134: #else /* ANSI C */
! 2135: sword OCIDateFromText( OCIError *err, CONST text *date_str,
! 2136: ub4 d_str_length, CONST text *fmt, ub1 fmt_length,
! 2137: CONST text *lang_name, ub4 lang_length,
! 2138: OCIDate *date );
! 2139: #endif
! 2140: /*
! 2141: NAME: OCIDateFromText - OCIDate convert String TO Date
! 2142: PARAMETERS:
! 2143: err (IN/OUT) - error handle. If there is an error, it is
! 2144: recorded in 'err' and this function returns OCI_ERROR.
! 2145: The error recorded in 'err' can be retrieved by calling
! 2146: OCIErrorGet().
! 2147: date_str (IN) - input string to be converted to Oracle date
! 2148: d_str_length (IN) - size of the input string, if the length is -1
! 2149: then 'date_str' is treated as a null terminated string
! 2150: fmt (IN) - conversion format; if 'fmt' is a null pointer, then
! 2151: the string is expected to be in 'DD-MON-YY' format.
! 2152: fmt_length (IN) - length of the 'fmt' parameter
! 2153: lang_name (IN) - language in which the names and abbreviations of
! 2154: days and months are specified, if null i.e. (text *)0,
! 2155: the default language of session is used,
! 2156: lang_length (IN) - length of the 'lang_name' parameter
! 2157: date (OUT) - given string converted to date
! 2158: DESCRIPTION:
! 2159: Converts the given string to Oracle date
! 2160: according to the specified format. Refer to "TO_DATE" conversion
! 2161: function described in "Oracle SQL Language Reference Manual" for a
! 2162: description of format.
! 2163: RETURNS:
! 2164: OCI_SUCCESS if the function completes successfully.
! 2165: OCI_INVALID_HANDLE if 'err' is NULL.
! 2166: OCI_ERROR if
! 2167: invalid format
! 2168: unknown language
! 2169: invalid input string
! 2170: <to be discovered>
! 2171: */
! 2172:
! 2173: /*----------------------------- OCIDateCompare ------------------------------*/
! 2174:
! 2175: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2176: sword OCIDateCompare(/*_ OCIError *err, CONST OCIDate *date1,
! 2177: CONST OCIDate *date2, sword *result _*/);
! 2178: #else /* ANSI C */
! 2179: sword OCIDateCompare( OCIError *err, CONST OCIDate *date1,
! 2180: CONST OCIDate *date2, sword *result );
! 2181: #endif
! 2182: /*
! 2183: NAME: OCIDateCompare - OCIDate CoMPare dates
! 2184: PARAMETERS:
! 2185: err (IN/OUT) - error handle. If there is an error, it is
! 2186: recorded in 'err' and this function returns OCI_ERROR.
! 2187: The error recorded in 'err' can be retrieved by calling
! 2188: OCIErrorGet().
! 2189: date1, date2 (IN) - dates to be compared
! 2190: result (OUT) - comparison result, 0 if equal, -1 if date1 < date2,
! 2191: 1 if date1 > date2
! 2192: DESCRIPTION:
! 2193: The function OCIDateCompare compares two dates. It returns -1 if date1 is
! 2194: smaller than date2, 0 if they are equal, and 1 if date1 is greater
! 2195: than date2.
! 2196: RETURNS:
! 2197: OCI_SUCCESS if the function completes successfully.
! 2198: OCI_INVALID_HANDLE if 'err' is NULL.
! 2199: OCI_ERROR if
! 2200: invalid date
! 2201: <to be discovered>
! 2202: */
! 2203:
! 2204: /*------------------------- OCIDateAddMonths --------------------------------*/
! 2205:
! 2206: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2207: sword OCIDateAddMonths(/*_ OCIError *err, CONST OCIDate *date, sb4 num_months,
! 2208: OCIDate *result _*/);
! 2209: #else /* ANSI C */
! 2210: sword OCIDateAddMonths( OCIError *err, CONST OCIDate *date, sb4 num_months,
! 2211: OCIDate *result );
! 2212: #endif
! 2213: /*
! 2214: NAME: OCIDateAddMonths - OCIDate ADd or subtract Months
! 2215: PARAMETERS:
! 2216: err (IN/OUT) - error handle. If there is an error, it is
! 2217: recorded in 'err' and this function returns OCI_ERROR.
! 2218: The error recorded in 'err' can be retrieved by calling
! 2219: OCIErrorGet().
! 2220: date (IN) - 'num_months' added or subtracted from 'date'
! 2221: num_months (IN) - number of months to be added or subtracted
! 2222: (a negative value will be subtracted)
! 2223: result (IN/OUT) - result of adding or subtracting to 'date'
! 2224: DESCRIPTION:
! 2225: The function OCIDateAddDays adds or subtracts num_months from the
! 2226: date 'date'.
! 2227: If the input 'date' is the last day of a month, then
! 2228: appropriate adjustments are made to ensure that the output date is
! 2229: also the last day of the month. For example, Feb. 28 + 1 month =
! 2230: March 31, and November 30 - 3 months = August 31. Otherwise the
! 2231: 'result' date has the same day component as 'date'.
! 2232: RETURNS:
! 2233: OCI_SUCCESS if the function completes successfully.
! 2234: OCI_INVALID_HANDLE if 'err' is NULL.
! 2235: OCI_ERROR if
! 2236: invalid date
! 2237: <to be discovered>
! 2238: */
! 2239:
! 2240: /*--------------------------- OCIDateAddDays --------------------------------*/
! 2241:
! 2242: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2243: sword OCIDateAddDays(/*_ OCIError *err, CONST OCIDate *date, sb4 num_days,
! 2244: OCIDate *result _*/);
! 2245: #else /* ANSI C */
! 2246: sword OCIDateAddDays( OCIError *err, CONST OCIDate *date, sb4 num_days,
! 2247: OCIDate *result );
! 2248: #endif
! 2249: /*
! 2250: NAME: OCIDateAddDays - OCIDate ADd or subtract Days
! 2251: PARAMETERS:
! 2252: err (IN/OUT) - error handle. If there is an error, it is
! 2253: recorded in 'err' and this function returns OCI_ERROR.
! 2254: The error recorded in 'err' can be retrieved by calling
! 2255: OCIErrorGet().
! 2256: date (IN) - 'num_days' added or subtracted from 'date'
! 2257: num_days (IN) - number of days to be added or subtracted
! 2258: (a negative value will be subtracted)
! 2259: result (IN/OUT) - result of adding or subtracting to 'date'
! 2260: DESCRIPTION:
! 2261: The function OCIDateAddDays adds or subtracts num_days from the
! 2262: date 'date'.
! 2263: RETURNS:
! 2264: OCI_SUCCESS if the function completes successfully.
! 2265: OCI_INVALID_HANDLE if 'err' is NULL.
! 2266: OCI_ERROR if
! 2267: invalid date
! 2268: <to be discovered>
! 2269: */
! 2270:
! 2271: /*--------------------------- OCIDateLastDay --------------------------------*/
! 2272:
! 2273: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2274: sword OCIDateLastDay(/*_ OCIError *err, CONST OCIDate *date,
! 2275: OCIDate *last_day _*/);
! 2276: #else /* ANSI C */
! 2277: sword OCIDateLastDay( OCIError *err, CONST OCIDate *date,
! 2278: OCIDate *last_day );
! 2279: #endif
! 2280: /*
! 2281: NAME: OCIDateLastDay - OCIDate get date of the LaST day of the month
! 2282: PARAMETERS:
! 2283: err (IN/OUT) - error handle. If there is an error, it is
! 2284: recorded in 'err' and this function returns OCI_ERROR.
! 2285: The error recorded in 'err' can be retrieved by calling
! 2286: OCIErrorGet().
! 2287: date (IN) - input date
! 2288: last_day (OUT) - last day of the month in date 'date'
! 2289: DESCRIPTION:
! 2290: The function OCIDateLastDay returns the date of the last day of the
! 2291: month in date 'date'.
! 2292: RETURNS:
! 2293: OCI_SUCCESS if the function completes successfully.
! 2294: OCI_INVALID_HANDLE if 'err' is NULL.
! 2295: OCI_ERROR if
! 2296: invalid date
! 2297: <to be discovered>
! 2298: */
! 2299:
! 2300: /*----------------------- OCIDateDaysBetween --------------------------------*/
! 2301:
! 2302: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2303: sword OCIDateDaysBetween(/*_ OCIError *err, CONST OCIDate *date1,
! 2304: CONST OCIDate *date2, sb4 *num_days _*/);
! 2305: #else /* ANSI C */
! 2306: sword OCIDateDaysBetween( OCIError *err, CONST OCIDate *date1,
! 2307: CONST OCIDate *date2, sb4 *num_days );
! 2308: #endif
! 2309: /*
! 2310: NAME: OCIDateDaysBetween - OCIDate get number of days BeTWeen two dates
! 2311: PARAMETERS:
! 2312: err (IN/OUT) - error handle. If there is an error, it is
! 2313: recorded in 'err' and this function returns OCI_ERROR.
! 2314: The error recorded in 'err' can be retrieved by calling
! 2315: OCIErrorGet().
! 2316: date1, date2 (IN) - input dates
! 2317: num_days (OUT) - number of days between date1 and date2
! 2318: DESCRIPTION:
! 2319: The function OCIDateDaysBetween returns the number of days between
! 2320: date1 and date2. The time is ignored in this computation.
! 2321: RETURNS:
! 2322: OCI_SUCCESS if the function completes successfully.
! 2323: OCI_INVALID_HANDLE if 'err' is NULL.
! 2324: OCI_ERROR if
! 2325: invalid date
! 2326: <to be discovered>
! 2327: */
! 2328:
! 2329: /*------------------------ OCIDateZoneToZone --------------------------------*/
! 2330:
! 2331: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2332: sword OCIDateZoneToZone(/*_ OCIError *err, CONST OCIDate *date1,
! 2333: CONST text *zon1,
! 2334: ub4 zon1_length, CONST text *zon2, ub4 zon2_length,
! 2335: OCIDate *date2 _*/);
! 2336: #else /* ANSI C */
! 2337: sword OCIDateZoneToZone( OCIError *err, CONST OCIDate *date1,
! 2338: CONST text *zon1,
! 2339: ub4 zon1_length, CONST text *zon2, ub4 zon2_length,
! 2340: OCIDate *date2 );
! 2341: #endif
! 2342: /*
! 2343: NAME: OCIDateZoneToZone - OCIDate convert date from one Zone TO another Zone
! 2344: PARAMETERS:
! 2345: err (IN/OUT) - error handle. If there is an error, it is
! 2346: recorded in 'err' and this function returns OCI_ERROR.
! 2347: The error recorded in 'err' can be retrieved by calling
! 2348: OCIErrorGet().
! 2349: date1 (IN) - date to be converted
! 2350: zon1 (IN) - zone of input date
! 2351: zon1_length (IN) - length in bytes of string 'zon1'
! 2352: zon2 (IN) - zone to be converted to
! 2353: zon2_length (IN) - length in bytes of string 'zon2'
! 2354: date2 (OUT) - converted date (in 'zon2')
! 2355: DESCRIPTION:
! 2356: Converts date from one time zone to another. Given date 'date1'
! 2357: in time zone 'zon1' returns date 'date2' in time zone 'zon2'.
! 2358: RETURNS:
! 2359: OCI_SUCCESS if the function completes successfully.
! 2360: OCI_INVALID_HANDLE if 'err' is NULL.
! 2361: OCI_ERROR if
! 2362: invlid date
! 2363: invald input time zone
! 2364: invald output time zone
! 2365: <to be discovered>
! 2366: */
! 2367:
! 2368: /*--------------------------- OCIDateNextDay --------------------------------*/
! 2369:
! 2370: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2371: sword OCIDateNextDay(/*_ OCIError *err, CONST OCIDate *date, CONST text *day_p,
! 2372: ub4 day_length, OCIDate *next_day _*/);
! 2373: #else /* ANSI C */
! 2374: sword OCIDateNextDay( OCIError *err, CONST OCIDate *date, CONST text *day_p,
! 2375: ub4 day_length, OCIDate *next_day );
! 2376: #endif
! 2377: /*
! 2378: NAME: OCIDateNextDay - OCIDate get date of Next DaY
! 2379: PARAMETERS:
! 2380: err (IN/OUT) - error handle. If there is an error, it is
! 2381: recorded in 'err' and this function returns OCI_ERROR.
! 2382: The error recorded in 'err' can be retrieved by calling
! 2383: OCIErrorGet().
! 2384: date (IN) - returned date should be later than this date
! 2385: day (IN) - first day of week named by this is returned
! 2386: day_length (IN) - length in bytes of string 'day'
! 2387: next_day (OUT) - first day of the week named by 'day' later than 'date'
! 2388: DESCRIPTION:
! 2389: Returns the date of the first day of the
! 2390: week named by 'day' that is later than date 'date'.
! 2391: RETURNS:
! 2392: OCI_SUCCESS if the function completes successfully.
! 2393: OCI_INVALID_HANDLE if 'err' is NULL.
! 2394: OCI_ERROR if
! 2395: invalid date
! 2396: invalid day
! 2397: <to be discovered>
! 2398: */
! 2399:
! 2400: /*----------------------------- OCIDateCheck --------------------------------*/
! 2401:
! 2402: /* Listing of error bits used by OCIDateCheck() */
! 2403: #define OCI_DATE_INVALID_DAY 0x1 /* Bad DAy */
! 2404: #define OCI_DATE_DAY_BELOW_VALID 0x2 /* Bad DAy Low/high bit (1=low)*/
! 2405: #define OCI_DATE_INVALID_MONTH 0x4 /* Bad MOnth */
! 2406: #define OCI_DATE_MONTH_BELOW_VALID 0x8 /* Bad MOnth Low/high bit (1=low)*/
! 2407: #define OCI_DATE_INVALID_YEAR 0x10 /* Bad YeaR */
! 2408: #define OCI_DATE_YEAR_BELOW_VALID 0x20 /* Bad YeaR Low/high bit (1=low)*/
! 2409: #define OCI_DATE_INVALID_HOUR 0x40 /* Bad HouR */
! 2410: #define OCI_DATE_HOUR_BELOW_VALID 0x80 /* Bad HouR Low/high bit (1=low)*/
! 2411: #define OCI_DATE_INVALID_MINUTE 0x100 /* Bad MiNute */
! 2412: #define OCI_DATE_MINUTE_BELOW_VALID 0x200
! 2413: /* Bad MiNute Low/high bit (1=low)*/
! 2414: #define OCI_DATE_INVALID_SECOND 0x400 /* Bad SeCond */
! 2415: #define OCI_DATE_SECOND_BELOW_VALID 0x800
! 2416: /* bad second Low/high bit (1=low)*/
! 2417: #define OCI_DATE_DAY_MISSING_FROM_1582 0x1000
! 2418: /* Day is one of those "missing" from 1582 */
! 2419: #define OCI_DATE_YEAR_ZERO 0x2000 /* Year may not equal zero */
! 2420: #define OCI_DATE_INVALID_FORMAT 0x8000 /* Bad date format input */
! 2421:
! 2422: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2423: sword OCIDateCheck(/*_ OCIError *err, CONST OCIDate *date, uword *valid _*/);
! 2424: #else /* ANSI C */
! 2425: sword OCIDateCheck( OCIError *err, CONST OCIDate *date, uword *valid );
! 2426: #endif
! 2427: /*
! 2428: NAME: OCIDateCheck - OCIDate CHecK if the given date is valid
! 2429: PARAMETERS:
! 2430: err (IN/OUT) - error handle. If there is an error, it is
! 2431: recorded in 'err' and this function returns OCI_ERROR.
! 2432: The error recorded in 'err' can be retrieved by calling
! 2433: OCIErrorGet().
! 2434: date (IN) - date to be checked
! 2435: valid (OUT) - returns zero for a valid date, otherwise
! 2436: the ORed combination of all error bits specified below:
! 2437:
! 2438: Macro name Bit number Error
! 2439: ---------- ---------- -----
! 2440: OCI_DATE_INVALID_DAY 0x1 Bad day
! 2441: OCI_DATE_DAY_BELOW_VALID 0x2 Bad DAy Low/high bit (1=low)
! 2442: OCI_DATE_INVALID_MONTH 0x4 Bad MOnth
! 2443: OCI_DATE_MONTH_BELOW_VALID 0x8 Bad MOnth Low/high bit (1=low)
! 2444: OCI_DATE_INVALID_YEAR 0x10 Bad YeaR
! 2445: OCI_DATE_YEAR_BELOW_VALID 0x20 Bad YeaR Low/high bit (1=low)
! 2446: OCI_DATE_INVALID_HOUR 0x40 Bad HouR
! 2447: OCI_DATE_HOUR_BELOW_VALID 0x80 Bad HouR Low/high bit (1=low)
! 2448: OCI_DATE_INVALID_MINUTE 0x100 Bad MiNute
! 2449: OCI_DATE_MINUTE_BELOW_VALID 0x200 Bad MiNute Low/high bit (1=low)
! 2450: OCI_DATE_INVALID_SECOND 0x400 Bad SeCond
! 2451: OCI_DATE_SECOND_BELOW_VALID 0x800 bad second Low/high bit (1=low)
! 2452: OCI_DATE_DAY_MISSING_FROM_1582 0x1000 Day is one of those "missing"
! 2453: from 1582
! 2454: OCI_DATE_YEAR_ZERO 0x2000 Year may not equal zero
! 2455: OCI_DATE_INVALID_FORMAT 0x8000 Bad date format input
! 2456:
! 2457: So, for example, if the date passed in was 2/0/1990 25:61:10 in
! 2458: (month/day/year hours:minutes:seconds format), the erroor returned
! 2459: would be OCI_DATE_INVALID_DAY | OCI_DATE_DAY_BELOW_VALID |
! 2460: OCI_DATE_INVALID_HOUR | OCI_DATE_INVALID_MINUTE
! 2461:
! 2462: DESCRIPTION:
! 2463: Check if the given date is valid.
! 2464: RETURNS:
! 2465: OCI_SUCCESS if the function completes successfully.
! 2466: OCI_INVALID_HANDLE if 'err' is NULL.
! 2467: OCI_ERROR if
! 2468: 'date' and 'valid' pointers are NULL pointers
! 2469: */
! 2470:
! 2471: /*--------------------------- OCIDateSysDate --------------------------------*/
! 2472:
! 2473: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2474: sword OCIDateSysDate(/*_ OCIError *err, OCIDate *sys_date _*/);
! 2475: #else /* ANSI C */
! 2476: sword OCIDateSysDate( OCIError *err, OCIDate *sys_date );
! 2477: #endif
! 2478: /*
! 2479: NAME: OCIDateSysDate - OCIDate get current SYStem date and time
! 2480: PARAMETERS:
! 2481: err (IN/OUT) - error handle. If there is an error, it is
! 2482: recorded in 'err' and this function returns OCI_ERROR.
! 2483: The error recorded in 'err' can be retrieved by calling
! 2484: OCIErrorGet().
! 2485: sys_date (OUT) - current system date and time
! 2486: DESCRIPTION:
! 2487: Returns the current system date and time.
! 2488: RETURNS:
! 2489: OCI_SUCCESS if the function completes successfully.
! 2490: OCI_INVALID_HANDLE if 'err' is NULL.
! 2491: OCI_ERROR if
! 2492: <to be discovered>
! 2493: */
! 2494:
! 2495: /*****************************************************************************/
! 2496: /* FIXED-LENGTH STRING - CHAR (N) */
! 2497: /*****************************************************************************/
! 2498:
! 2499: /*
! 2500: * An ADT attribute declared as "x CHAR(n)" is mapped to "OCIString *x;".
! 2501: * The representation of OCIString * is shown below.
! 2502: */
! 2503:
! 2504: /*****************************************************************************/
! 2505: /* VARIABLE-LENGTH STRING */
! 2506: /*****************************************************************************/
! 2507:
! 2508: /*
! 2509: * The variable-length string is represented in C as a pointer to OCIString
! 2510: * structure. The OCIString structure is opaque to the user. Functions are
! 2511: * provided to allow the user to manipulate a variable-length string.
! 2512: *
! 2513: * A variable-length string can be declared as:
! 2514: *
! 2515: * OCIString *vstr;
! 2516: *
! 2517: * For binding variables of type OCIString* in OCI calls (OCIBindByName(),
! 2518: * OCIBindByPos() and OCIDefineByPos()) use the external type code SQLT_VST.
! 2519: */
! 2520: typedef struct OCIString OCIString;
! 2521:
! 2522: /*-------------------------- OCIStringAssign --------------------------------*/
! 2523:
! 2524: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2525: sword OCIStringAssign(/*_ OCIEnv *env, OCIError *err, CONST OCIString *rhs,
! 2526: OCIString **lhs _*/);
! 2527: #else /* ANSI C */
! 2528: sword OCIStringAssign( OCIEnv *env, OCIError *err, CONST OCIString *rhs,
! 2529: OCIString **lhs );
! 2530: #endif
! 2531: /*
! 2532: NAME: OCIStringAssign - OCIString Assign String to String
! 2533: PARAMETERS:
! 2534: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2535: err (IN/OUT) - error handle. If there is an error, it is
! 2536: recorded in 'err' and this function returns OCI_ERROR.
! 2537: The error recorded in 'err' can be retrieved by calling
! 2538: OCIErrorGet().
! 2539: rhs (IN) - RHS of the assignment, the type of rhs is also OCIString
! 2540: lhs (IN/OUT) - LHS of the assignment
! 2541: DESCRIPTION:
! 2542: Assign 'rhs' string to 'lhs' string. The 'lhs' string may be
! 2543: resized depending upon the size of the 'rhs'. The assigned string is
! 2544: null-terminated. The 'length' field will not include the extra byte
! 2545: needed for null termination.
! 2546: RETURNS:
! 2547: OCI_SUCCESS if the function completes successfully.
! 2548: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2549: OCI_ERROR if
! 2550: out of space error
! 2551: */
! 2552:
! 2553: /*---------------------- OCIStringAssignText --------------------------------*/
! 2554:
! 2555: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2556: sword OCIStringAssignText(/*_ OCIEnv *env, OCIError *err, CONST text *rhs,
! 2557: ub4 rhs_len, OCIString **lhs _*/);
! 2558: #else /* ANSI C */
! 2559: sword OCIStringAssignText( OCIEnv *env, OCIError *err, CONST text *rhs,
! 2560: ub4 rhs_len, OCIString **lhs );
! 2561: #endif
! 2562: /*
! 2563: NAME: OCIStringAssignText - OCIString Assign Text string to String
! 2564: PARAMETERS:
! 2565: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2566: err (IN/OUT) - error handle. If there is an error, it is
! 2567: recorded in 'err' and this function returns OCI_ERROR.
! 2568: The error recorded in 'err' can be retrieved by calling
! 2569: OCIErrorGet().
! 2570: rhs (IN) - RHS of the assignment, the type of rhs is a text string
! 2571: rhs_len (IN) - length of the 'rhs' string
! 2572: lhs (IN/OUT) - LHS of the assignment
! 2573: DESCRIPTION:
! 2574: Assign 'rhs' string to 'lhs' string. The 'lhs' string may be
! 2575: resized depending upon the size of the 'rhs'. The assigned string is
! 2576: null-terminated. The 'length' field will not include the extra byte
! 2577: needed for null termination.
! 2578: RETURNS:
! 2579: OCI_SUCCESS if the function completes successfully.
! 2580: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2581: OCI_ERROR if
! 2582: out of space error
! 2583: */
! 2584:
! 2585: /*-------------------------- OCIStringResize --------------------------------*/
! 2586:
! 2587: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2588: sword OCIStringResize(/*_ OCIEnv *env, OCIError *err, ub4 new_size,
! 2589: OCIString **str _*/);
! 2590: #else /* ANSI C */
! 2591: sword OCIStringResize( OCIEnv *env, OCIError *err, ub4 new_size,
! 2592: OCIString **str );
! 2593: #endif
! 2594: /*
! 2595: NAME: OCIStringResize - OCIString ReSiZe string memory
! 2596: PARAMETERS:
! 2597: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2598: err (IN/OUT) - error handle. If there is an error, it is
! 2599: recorded in 'err' and this function returns OCI_ERROR.
! 2600: The error recorded in 'err' can be retrieved by calling
! 2601: OCIErrorGet().
! 2602: new_size (IN) - new memory size of the string in bytes
! 2603: str (IN/OUT) - allocated memory for the string is freed from the
! 2604: OOCI heap
! 2605: DESCRIPTION:
! 2606: This function resizes the memory of the given variable-length string in
! 2607: the object cache. The contents of the string are NOT preserved.
! 2608: This function may allocate the string in a new memory region in
! 2609: which case the original memory occupied by the given string will
! 2610: be freed. If the input string is null (str == NULL), then this
! 2611: function will allocate memory for the string.
! 2612:
! 2613: If the new_size is 0, then this function frees the memory occupied
! 2614: by 'str' and a null pointer value is returned.
! 2615:
! 2616: NOTE: The caller must compute 'new_size' taking into account space
! 2617: for the null character ('\0').
! 2618: RETURNS:
! 2619: OCI_SUCCESS if the function completes successfully.
! 2620: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2621: OCI_ERROR if
! 2622: out of space error
! 2623: */
! 2624:
! 2625: /*---------------------------- OCIStringSize --------------------------------*/
! 2626:
! 2627: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2628: ub4 OCIStringSize(/*_ OCIEnv *env, CONST OCIString *vs _*/);
! 2629: #else /* ANSI C */
! 2630: ub4 OCIStringSize( OCIEnv *env, CONST OCIString *vs );
! 2631: #endif
! 2632: /*
! 2633: NAME: OCIStringSize - OCIString Get String siZe
! 2634: PARAMETERS:
! 2635: env(IN) - pointer to OCI environment handle
! 2636: vs (IN) - string whose size is returned
! 2637: DESCRIPTION:
! 2638: Return the size of the given string.
! 2639: RETURNS:
! 2640: size of the string in bytes is returned
! 2641: */
! 2642:
! 2643: /*----------------------------- OCIStringPtr --------------------------------*/
! 2644:
! 2645: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2646: text *OCIStringPtr(/*_ OCIEnv *env, CONST OCIString *vs _*/);
! 2647: #else /* ANSI C */
! 2648: text *OCIStringPtr( OCIEnv *env, CONST OCIString *vs );
! 2649: #endif
! 2650: /*
! 2651: NAME: OCIStringPtr - OCIString Get String Pointer
! 2652: PARAMETERS:
! 2653: env(IN) - pointer to OCI environment handle
! 2654: vs (IN) - pointer to the text of this string is returned
! 2655: DESCRIPTION:
! 2656: Return the pointer to the text of the given string.
! 2657: RETURNS:
! 2658: pointer to the text of the string is returned
! 2659: */
! 2660:
! 2661: /*----------------------- OCIStringAllocSize --------------------------------*/
! 2662:
! 2663: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2664: sword OCIStringAllocSize(/*_ OCIEnv *env, OCIError *err, CONST OCIString *vs,
! 2665: ub4 *allocsize _*/);
! 2666: #else /* ANSI C */
! 2667: sword OCIStringAllocSize( OCIEnv *env, OCIError *err, CONST OCIString *vs,
! 2668: ub4 *allocsize );
! 2669: #endif
! 2670: /*
! 2671: NAME: OCIStringAllocSize - OCIString get Allocated SiZe of string memory
! 2672: in bytes
! 2673: PARAMETERS:
! 2674: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2675: err (IN/OUT) - error handle. If there is an error, it is
! 2676: recorded in 'err' and this function returns OCI_ERROR.
! 2677: The error recorded in 'err' can be retrieved by calling
! 2678: OCIErrorGet().
! 2679: vs (IN) - string whose allocated size in bytes is returned
! 2680: allocsize (OUT) - allocated size of string memory in bytes is returned
! 2681: DESCRIPTION:
! 2682: Return the allocated size of the string memory in bytes. The
! 2683: allocated size is >= actual string size.
! 2684: REQUIRES:
! 2685: vs is a non-null pointer
! 2686: RETURNS:
! 2687: OCI_SUCCESS if the function completes successfully.
! 2688: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2689: OCI_ERROR on error
! 2690: */
! 2691:
! 2692: /*****************************************************************************/
! 2693: /* VARIABLE-LENGTH RAW */
! 2694: /*****************************************************************************/
! 2695:
! 2696: /*
! 2697: * The variable-length raw is represented in C as a pointer to OCIRaw
! 2698: * structure. The OCIRaw structure is opaque to the user. Functions are
! 2699: * provided to allow the user to manipulate a variable-length raw.
! 2700: *
! 2701: * A variable-length raw can be declared as:
! 2702: *
! 2703: * OCIRaw *raw;
! 2704: *
! 2705: * For binding variables of type OCIRaw* in OCI calls (OCIBindByName(),
! 2706: * OCIBindByPos() and OCIDefineByPos()) use the external type code SQLT_LVB.
! 2707: */
! 2708: typedef struct OCIRaw OCIRaw;
! 2709:
! 2710: /*-------------------------- OCIRawAssignRaw --------------------------------*/
! 2711:
! 2712: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2713: sword OCIRawAssignRaw(/*_ OCIEnv *env, OCIError *err, CONST OCIRaw *rhs,
! 2714: OCIRaw **lhs _*/);
! 2715: #else /* ANSI C */
! 2716: sword OCIRawAssignRaw( OCIEnv *env, OCIError *err, CONST OCIRaw *rhs,
! 2717: OCIRaw **lhs );
! 2718: #endif
! 2719: /*
! 2720: NAME: OCIRawAssignRaw - OCIRaw Assign Raw (of type OCIRaw*) to
! 2721: Raw (of type OCIRaw*)
! 2722: PARAMETERS:
! 2723: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2724: err (IN/OUT) - error handle. If there is an error, it is
! 2725: recorded in 'err' and this function returns OCI_ERROR.
! 2726: The error recorded in 'err' can be retrieved by calling
! 2727: OCIErrorGet().
! 2728: rhs (IN) - RHS of the assignment, the type of rhs is also OCIRaw
! 2729: lhs (IN/OUT) - LHS of the assignment
! 2730: DESCRIPTION:
! 2731: Assign 'rhs' raw to 'lhs' raw. The 'lhs' raw may be
! 2732: resized depending upon the size of the 'rhs'.
! 2733: RETURNS:
! 2734: OCI_SUCCESS if the function completes successfully.
! 2735: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2736: OCI_ERROR if
! 2737: out of space error
! 2738: */
! 2739:
! 2740: /*------------------------ OCIRawAssignBytes --------------------------------*/
! 2741:
! 2742: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2743: sword OCIRawAssignBytes(/*_ OCIEnv *env, OCIError *err, CONST ub1 *rhs,
! 2744: ub4 rhs_len, OCIRaw **lhs _*/);
! 2745: #else /* ANSI C */
! 2746: sword OCIRawAssignBytes( OCIEnv *env, OCIError *err, CONST ub1 *rhs,
! 2747: ub4 rhs_len, OCIRaw **lhs );
! 2748: #endif
! 2749: /*
! 2750: NAME: OCIRawAssignBytes - OCIRaw Assign raw Bytes (of type ub1*) to Raw
! 2751: (of type OCIRaw*)
! 2752: PARAMETERS:
! 2753: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2754: err (IN/OUT) - error handle. If there is an error, it is
! 2755: recorded in 'err' and this function returns OCI_ERROR.
! 2756: The error recorded in 'err' can be retrieved by calling
! 2757: OCIErrorGet().
! 2758: rhs (IN) - RHS of the assignment, the type of rhs is ub1 *
! 2759: rhs_len (IN) - length of the 'rhs' raw
! 2760: lhs (IN/OUT) - LHS of the assignment
! 2761: DESCRIPTION:
! 2762: Assign 'rhs' raw to 'lhs' raw. The 'lhs' raw may be
! 2763: resized depending upon the size of the 'rhs'.
! 2764: RETURNS:
! 2765: OCI_SUCCESS if the function completes successfully.
! 2766: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2767: OCI_ERROR if
! 2768: out of space error
! 2769: */
! 2770:
! 2771: /*---------------------------- OCIRawResize ---------------------------------*/
! 2772:
! 2773: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2774: sword OCIRawResize(/*_ OCIEnv *env, OCIError *err, ub4 new_size,
! 2775: OCIRaw **raw _*/);
! 2776: #else /* ANSI C */
! 2777: sword OCIRawResize( OCIEnv *env, OCIError *err, ub4 new_size,
! 2778: OCIRaw **raw );
! 2779: #endif
! 2780: /*
! 2781: NAME: OCIRawResize - OCIRaw ReSiZe memory of variable-length raw
! 2782: PARAMETERS:
! 2783: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2784: err (IN/OUT) - error handle. If there is an error, it is
! 2785: recorded in 'err' and this function returns OCI_ERROR.
! 2786: The error recorded in 'err' can be retrieved by calling
! 2787: OCIErrorGet().
! 2788: new_size (IN) - new size of the raw data in bytes
! 2789: raw (IN) - variable-length raw pointer; the raw is
! 2790: resized to 'new_size'
! 2791: DESCRIPTION:
! 2792: This function resizes the memory of the given variable-length raw in
! 2793: the object cache.
! 2794: The previous contents of the raw are NOT preserved.
! 2795: This function may allocate the raw in a new memory region in
! 2796: which case the original memory occupied by the given raw will
! 2797: be freed. If the input raw is null (raw == NULL), then this
! 2798: function will allocate memory for the raw data.
! 2799:
! 2800: If the new_size is 0, then this function frees the memory occupied
! 2801: by 'raw' and a null pointer value is returned.
! 2802: RETURNS:
! 2803: OCI_SUCCESS if the function completes successfully.
! 2804: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2805: OCI_ERROR if
! 2806: out of space error
! 2807: */
! 2808:
! 2809: /*------------------------------- OCIRawSize --------------------------------*/
! 2810:
! 2811: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2812: ub4 OCIRawSize(/*_ OCIEnv * env, CONST OCIRaw *raw _*/);
! 2813: #else /* ANSI C */
! 2814: ub4 OCIRawSize( OCIEnv * env, CONST OCIRaw *raw );
! 2815: #endif
! 2816: /*
! 2817: NAME: OCIRawSize - OCIRaw Get Raw siZe
! 2818: PARAMETERS:
! 2819: env (IN) - pointer to OCI environment handle
! 2820: raw (INT) - raw whose size is returned
! 2821: DESCRIPTION:
! 2822: Return the size of the given raw.
! 2823: RETURNS:
! 2824: size of the raw in bytes is returned
! 2825: */
! 2826:
! 2827: /*--------------------------------- OCIRawPtr -------------------------------*/
! 2828: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2829: ub1 *OCIRawPtr(/*_ OCIEnv * env, CONST OCIRaw *raw _*/);
! 2830: #else /* ANSI C */
! 2831: ub1 *OCIRawPtr( OCIEnv * env, CONST OCIRaw *raw );
! 2832: #endif
! 2833: /*
! 2834: NAME: OCIRawPtr - OCIRaw Get Raw data Pointer
! 2835: PARAMETERS:
! 2836: env (IN) - pointer to OCI environment handle
! 2837: raw (IN) - pointer to the data of this raw is returned
! 2838: DESCRIPTION:
! 2839: Return the pointer to the data of the given raw.
! 2840: RETURNS:
! 2841: pointer to the data of the raw is returned
! 2842: */
! 2843:
! 2844: /*------------------------------ OCIRawAllocSize ----------------------------*/
! 2845:
! 2846: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2847: sword OCIRawAllocSize(/*_ OCIEnv *env, OCIError *err, CONST OCIRaw *raw,
! 2848: ub4 *allocsize _*/);
! 2849: #else /* ANSI C */
! 2850: sword OCIRawAllocSize( OCIEnv *env, OCIError *err, CONST OCIRaw *raw,
! 2851: ub4 *allocsize );
! 2852: #endif
! 2853: /*
! 2854: NAME: OCIRawAllocSize - OCIRaw get Allocated SiZe of raw memory in bytes
! 2855: PARAMETERS:
! 2856: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2857: err (IN/OUT) - error handle. If there is an error, it is
! 2858: recorded in 'err' and this function returns OCI_ERROR.
! 2859: The error recorded in 'err' can be retrieved by calling
! 2860: OCIErrorGet().
! 2861: raw (IN) - raw whose allocated size in bytes is returned
! 2862: allocsize (OUT) - allocated size of raw memory in bytes is returned
! 2863: DESCRIPTION:
! 2864: Return the allocated size of the raw memory in bytes. The
! 2865: allocated size is >= actual raw size.
! 2866: REQUIRES:
! 2867: raw is a non-null pointer
! 2868: RETURNS:
! 2869: OCI_SUCCESS if the function completes successfully.
! 2870: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2871: OCI_ERROR upon error
! 2872: */
! 2873:
! 2874: /*****************************************************************************/
! 2875: /* OBJECT REFERENCE OPERATIONS */
! 2876: /*****************************************************************************/
! 2877:
! 2878: /*
! 2879: * See the definition of OCIRef in oro.h.
! 2880: *
! 2881: * For binding variables of type OCIRef* in OCI calls (OCIBindByName(),
! 2882: * OCIBindByPos() and OCIDefineByPos()) use the code SQLT_REF.
! 2883: *
! 2884: */
! 2885:
! 2886: /*---------------------------- OCIRefClear ----------------------------------*/
! 2887: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2888: void OCIRefClear(/*_ OCIEnv *env, OCIRef *ref _*/);
! 2889: #else /* ANSI C */
! 2890: void OCIRefClear( OCIEnv *env, OCIRef *ref );
! 2891: #endif
! 2892: /*
! 2893: NAME: OCIRefClear - OCIRef CLeaR or nullify a ref
! 2894: PARAMETERS:
! 2895: env (IN) - pointer to OCI environment handle
! 2896: ref (IN/OUT) - ref to clear
! 2897: DESCRIPTION:
! 2898: Clear or nullify the given ref. A ref is considered to be a null ref
! 2899: if it does not contain a valid OID (and thus doesn't point to an
! 2900: object). Logically, a null ref is a dangling ref.
! 2901:
! 2902: Note that a null ref is still a valid SQL value and is not SQL-ly null.
! 2903: It can be used as a valid non-null constant ref value for NOT NULL
! 2904: column or attribute of a row in a table.
! 2905:
! 2906: If a null pointer value is passed as a ref,
! 2907: then this function is a no-op.
! 2908: */
! 2909:
! 2910: /*--------------------------- OCIRefAssign ----------------------------------*/
! 2911: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2912: sword OCIRefAssign(/*_ OCIEnv *env, OCIError *err, CONST OCIRef *source,
! 2913: OCIRef **target _*/);
! 2914: #else /* ANSI C */
! 2915: sword OCIRefAssign( OCIEnv *env, OCIError *err, CONST OCIRef *source,
! 2916: OCIRef **target );
! 2917: #endif
! 2918: /*
! 2919: NAME: OCIRefAssign - OCIRef CoPY a ref to another
! 2920: PARAMETERS:
! 2921: env (IN/OUT) - OCI environment handle initialized in object mode.
! 2922: err (IN/OUT) - error handle. If there is an error, it is
! 2923: recorded in 'err' and this function returns OCI_ERROR.
! 2924: The error recorded in 'err' can be retrieved by calling
! 2925: OCIErrorGet().
! 2926: source (IN) - ref to copy from
! 2927: target (IN/OUT) - ref to copy to
! 2928: DESCRIPTION:
! 2929: Copy 'source' ref to 'target' ref; both then reference the same
! 2930: object. If the target ref pointer is null (i.e. *target == NULL)
! 2931: then the copy function will allocate memory for the target ref
! 2932: in OOCI heap prior to the copy.
! 2933: RETURNS:
! 2934: OCI_SUCCESS if the function completes successfully.
! 2935: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 2936: OCI_ERROR if
! 2937: 1) out of memory
! 2938: */
! 2939:
! 2940: /*-------------------------- OCIRefIsEqual ----------------------------------*/
! 2941: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2942: boolean OCIRefIsEqual(/*_ OCIEnv *env, CONST OCIRef *x, CONST OCIRef *y _*/);
! 2943: #else /* ANSI C */
! 2944: boolean OCIRefIsEqual( OCIEnv *env, CONST OCIRef *x, CONST OCIRef *y );
! 2945: #endif
! 2946: /*
! 2947: NAME: OCIRefIsEqual - OCIRef compare two refs for EQUality
! 2948: PARAMETERS:
! 2949: env (IN) - pointer to OCI environment handle
! 2950: x (IN) - ref to compare
! 2951: y (IN) - ref to compare
! 2952: DESCRIPTION:
! 2953: Compare the given refs for equality.
! 2954: Two refs are equal if and only if:
! 2955: - they are both referencing the same persistent object, or
! 2956: - they are both referencing the same transient object.
! 2957:
! 2958: NOTE THAT TWO NULL REFS ARE CONSIDERED NOT EQUAL BY THIS FUNCTION.
! 2959: RETURNS:
! 2960: TRUE if the two refs are equal
! 2961: FALSE if the two refs are not equal, or X is NULL, or Y is NULL
! 2962: */
! 2963:
! 2964: /*--------------------------- OCIRefIsNull ----------------------------------*/
! 2965: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2966: boolean OCIRefIsNull(/*_ OCIEnv *env, CONST OCIRef *ref _*/);
! 2967: #else /* ANSI C */
! 2968: boolean OCIRefIsNull( OCIEnv *env, CONST OCIRef *ref );
! 2969: #endif
! 2970: /*
! 2971: NAME: OCIRefIsNull - OCIRef test if a ref is NULl
! 2972: PARAMETERS:
! 2973: env (IN) - pointer to OCI environment handle
! 2974: ref (IN) - ref to test for null
! 2975: DESCRIPTION:
! 2976: Return TRUE if the given ref is null; otherwise, return FALSE.
! 2977: A ref is null if and only if:
! 2978: - it is supposed to be referencing a persistent object, but
! 2979: its OID is null, or
! 2980: - it is supposed to be referencing a transient object, but it is
! 2981: currently not pointing to an object.
! 2982: A ref is a dangling ref if the object that it points to does not
! 2983: exist.
! 2984: RETURNS:
! 2985: TRUE if the given ref is NULL
! 2986: FALSE if the given ref is not NULL
! 2987: */
! 2988:
! 2989: /*-------------------------- OCIRefHexSize ----------------------------------*/
! 2990: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2991: ub4 OCIRefHexSize(/*_ OCIEnv *env, CONST OCIRef *ref _*/);
! 2992: #else /* ANSI C */
! 2993: ub4 OCIRefHexSize( OCIEnv *env, CONST OCIRef *ref );
! 2994: #endif
! 2995: /*
! 2996: NAME: OCIRefHexSize - OCIRef Hexadecimal buffer SiZe in bytes
! 2997: PARAMETERS:
! 2998: env (IN) - pointer to OCI environment handle
! 2999: ref (IN) - ref whose size in hexadecimal representation in bytes is
! 3000: returned
! 3001: DESCRIPTION:
! 3002: Return the size of the buffer in bytes required for the hexadecimal
! 3003: representation of the ref. A buffer of at-least this size must be
! 3004: passed to ref-to-hex (OCIRefToHex) conversion function.
! 3005: RETURNS:
! 3006: size of hexadecimal representation of ref
! 3007: */
! 3008:
! 3009: /*-------------------------- OCIRefFromHex ---------------------------------*/
! 3010: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3011: sword OCIRefFromHex(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 3012: CONST text *hex, ub4 length, OCIRef **ref _*/);
! 3013: #else /* ANSI C */
! 3014: sword OCIRefFromHex( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 3015: CONST text *hex, ub4 length, OCIRef **ref );
! 3016: #endif
! 3017: /*
! 3018: NAME:
! 3019: OCIRefFromHex - OCIRef convert a Hexadecimal string TO a Ref
! 3020: PARAMETERS:
! 3021: env (IN/OUT) - OCI environment handle initialized in object mode
! 3022: err (IN/OUT) - error handle. If there is an error, it is
! 3023: recorded in 'err' and this function returns OCI_ERROR.
! 3024: The error recorded in 'err' can be retrieved by
! 3025: calling OCIErrorGet().
! 3026: svc (IN) - OCI service context handle; if the resulting ref is
! 3027: initialized with this service context
! 3028: hex (IN) - hexadecimal string (that was produced by 'OCIRefToHex()"
! 3029: previously) to be convert into a ref
! 3030: length (IN) - length of the hexadecimal string
! 3031: ref (IN/OUT) - ref is initialized with the given value ('hex').
! 3032: If *ref is null, then space for the ref is allocated in the
! 3033: object cache, otherwise the memory occupied by the given ref
! 3034: is re-used.
! 3035: DESCRIPTION:
! 3036: Convert the given hexadecimal string into a ref. This function
! 3037: ensures that the resulting ref is well formed. It does NOT ensure
! 3038: that the object pointed to by the resulting ref exists or not.
! 3039: RETURNS:
! 3040: OCI_SUCCESS if the function completes successfully.
! 3041: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3042: OCI_ERROR if
! 3043: */
! 3044:
! 3045: /*--------------------------- OCIRefToHex -----------------------------------*/
! 3046: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3047: sword OCIRefToHex(/*_ OCIEnv *env, OCIError *err, CONST OCIRef *ref,
! 3048: text *hex, ub4 *hex_length _*/);
! 3049: #else /* ANSI C */
! 3050: sword OCIRefToHex( OCIEnv *env, OCIError *err, CONST OCIRef *ref,
! 3051: text *hex, ub4 *hex_length );
! 3052: #endif
! 3053: /*
! 3054: NAME:
! 3055: OCIRefToHex - OCIRef convert ref to a Hexadecimal string
! 3056: PARAMETERS:
! 3057: env (IN/OUT) - OCI environment handle initialized in object mode
! 3058: err (IN/OUT) - error handle. If there is an error, it is
! 3059: recorded in 'err' and this function returns OCI_ERROR.
! 3060: The error recorded in 'err' can be retrieved by
! 3061: calling OCIErrorGet().
! 3062: ref (IN) - ref to be converted into a hexadecimal string; if the
! 3063: ref is a null ref (i.e. OCIRefIsNull(ref) == TRUE) then
! 3064: a zero hex_length value is returned
! 3065: hex (OUT) - buffer that is large enough to contain the resulting
! 3066: hexadecimal string; the contents of the string is opaque
! 3067: to the caller
! 3068: hex_length (IN/OUT) - on input specifies the size of the 'hex' buffer,
! 3069: on output specifies the actual size of the hexadecimal
! 3070: string being returned in 'hex'
! 3071: DESCRIPTION:
! 3072: Convert the given ref into a hexadecimal string, and return the length
! 3073: of the string. The resulting string is opaque to the caller.
! 3074: RETURNS:
! 3075: OCI_SUCCESS if the function completes successfully.
! 3076: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3077: OCI_ERROR if
! 3078: the given buffer is not big enough to hold the resulting string
! 3079: */
! 3080:
! 3081:
! 3082: /*****************************************************************************/
! 3083: /* COLLECTION FUNCTIONS */
! 3084: /*****************************************************************************/
! 3085:
! 3086: /*
! 3087: The generic collection is represented by the type 'OCIColl'. The following
! 3088: operations OCIColl*() are provided on a generic collection:
! 3089: - get current size of collection
! 3090: - get upper bound of collection
! 3091: - get pointer to an element given its index
! 3092: - set element at given index (assign element)
! 3093: - append an element
! 3094: - trim the given number of elements from the end of the collection
! 3095: - collection assignment
! 3096:
! 3097: The following iterator based scanning functions are also provided on a
! 3098: generic collection. These functions make use of an iterator which is
! 3099: defined to be of type OCIIter.
! 3100:
! 3101: - create an iterator for scanning collection
! 3102: - destroy iterator
! 3103: - reset iterator to the beginning of collection
! 3104: - get pointer to current element pointed by iterator
! 3105: - get pointer to next element
! 3106: - get pointer to previous element
! 3107:
! 3108: The collections variable-length array (varray) and nested table
! 3109: are sub-types of generic collection. This means that the OCIColl*()
! 3110: functions can also be used to manipulate varray and nested table.
! 3111:
! 3112: The varray is represented by OCIArray type and nested table by OCITable.
! 3113: Besides OCIColl*() functions no additional functions are provided for
! 3114: manipulating varrays. The OCIColl*() functions are a complete set of
! 3115: functions to manipulate varrays.
! 3116:
! 3117: Besides OCIColl*() functions, the following functions OCITable*() can be
! 3118: used to manipulate nested table. The OCITable*() functions operate on
! 3119: nested tables only and should not be used on a varray.
! 3120:
! 3121: - delete an element at index i. Note that the position
! 3122: ordinals of the remaining elements of the table is not changed by the
! 3123: delete operation. So delete creates "holes" in the table.
! 3124: - check if an element exists at the given index i
! 3125: - return the smallest value of i for which exists(i) is true
! 3126: - return the largest value of i for which exists(i) is true
! 3127: - return pointer to the smallest position j, greater than i, such that
! 3128: OCITableExists(j) is true
! 3129: - return pointer to the largest position j, less than i, such that
! 3130: OCITableExists(j) is true
! 3131:
! 3132: For binding variables of type OCIColl* or OCITable* in OCI calls
! 3133: (OCIBindByName(), OCIBindByPos() and OCIDefineByPos()) use the external
! 3134: type code SQLT_NTY.
! 3135: */
! 3136:
! 3137: /* OCIColl - generic collection type */
! 3138: typedef struct OCIColl OCIColl;
! 3139:
! 3140: /* OCIArray - varray collection type */
! 3141: typedef OCIColl OCIArray;
! 3142:
! 3143: /* OCITable - nested table collection type */
! 3144: typedef OCIColl OCITable;
! 3145:
! 3146: /* OCIIter - collection iterator */
! 3147: typedef struct OCIIter OCIIter;
! 3148:
! 3149: /*----------------------------- OCICollSize ---------------------------------*/
! 3150:
! 3151: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3152: sword OCICollSize(/*_ OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3153: sb4 *size _*/);
! 3154: #else /* ANSI C */
! 3155: sword OCICollSize( OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3156: sb4 *size );
! 3157: #endif
! 3158: /*
! 3159: NAME: OCICollSize - OCIColl return current SIZe of the given collection
! 3160: PARAMETERS:
! 3161: env(IN) - pointer to OCI environment handle
! 3162: err (IN/OUT) - error handle. If there is an error, it is
! 3163: recorded in 'err' and this function returns OCI_ERROR.
! 3164: The error recorded in 'err' can be retrieved by calling
! 3165: OCIErrorGet().
! 3166: coll (IN) - collection whose number of elements is returned
! 3167: size (OUT) - current number of elements in the collection
! 3168: DESCRIPTION:
! 3169: Returns the current number of elements in the given collection.
! 3170:
! 3171: For collections of type nested table wherein 'delete element'
! 3172: operation is allowed, the count returned by OCICollSize() will
! 3173: NOT be decremented upon deleting elements. For example:
! 3174:
! 3175: OCICollSize(...);
! 3176: // assume 'size' returned is equal to 5
! 3177: OCITableDelete(...); // delete one element
! 3178: OCICollSize(...);
! 3179: // 'size' returned will still be 5
! 3180:
! 3181: To get the count minus the deleted elements use OCITableSize().
! 3182: Continuing the above example,
! 3183:
! 3184: OCITableSize(...)
! 3185: // 'size' returned will be equal to 4
! 3186:
! 3187: Note, a trim operation (OCICollTrim) will decrement the count
! 3188: by the number of trimmed elements. Continuing the above example,
! 3189:
! 3190: OCICollTrim(..,1..); // trim one element
! 3191: OCICollSize(...);
! 3192: // 'size' returned will be equal to 4
! 3193: RETURNS:
! 3194: OCI_SUCCESS if the function completes successfully.
! 3195: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3196: OCI_ERROR if
! 3197: error during loading of collection into object cache
! 3198: any of the input parameters is null
! 3199: */
! 3200:
! 3201: /*------------------------------ OCICollMax ---------------------------------*/
! 3202:
! 3203: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3204: sb4 OCICollMax(/*_ OCIEnv *env, CONST OCIColl *coll _*/);
! 3205: #else /* ANSI C */
! 3206: sb4 OCICollMax( OCIEnv *env, CONST OCIColl *coll );
! 3207: #endif
! 3208: /*
! 3209: NAME: OCICollMax - OCIColl return MAXimum size (upper-bound) of the
! 3210: given collection (in number of elements)
! 3211: PARAMETERS:
! 3212: env(IN) - pointer to OCI environment handle
! 3213: coll (IN) - collection whose upper-bound in number of elements
! 3214: is returned
! 3215: DESCRIPTION:
! 3216: Returns the max number of elements that the given collection can hold.
! 3217: A value 0 indicates that the collection has no upper-bound.
! 3218: REQUIRES:
! 3219: coll must point to a valid collection descriptor
! 3220: RETURNS:
! 3221: upper-bound of the given collection
! 3222: */
! 3223:
! 3224: /*-------------------------- OCICollGetElem ---------------------------------*/
! 3225:
! 3226: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3227: sword OCICollGetElem(/*_ OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3228: sb4 index, boolean *exists, dvoid **elem,
! 3229: dvoid **elemind _*/);
! 3230: #else /* ANSI C */
! 3231: sword OCICollGetElem( OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3232: sb4 index, boolean *exists, dvoid **elem,
! 3233: dvoid **elemind );
! 3234: #endif
! 3235: /*
! 3236: NAME: OCICollGetElem - OCIColl GET pointer to the element at the given index
! 3237: PARAMETERS:
! 3238: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3239: err (IN/OUT) - error handle. If there is an error, it is
! 3240: recorded in 'err' and this function returns OCI_ERROR.
! 3241: The error recorded in 'err' can be retrieved by calling
! 3242: OCIErrorGet().
! 3243: coll (IN) - pointer to the element in this collection is returned
! 3244: index (IN) - index of the element whose pointer is returned
! 3245: exists (OUT) - set to FALSE if element at the specified index does
! 3246: not exist else TRUE
! 3247: elem (OUT) - address of the desired element is returned
! 3248: elemind (OUT) [optional] - address of the null indicator information
! 3249: is returned; if (elemind == NULL) then the null indicator
! 3250: information will NOT be returned
! 3251: DESCRIPTION:
! 3252: Get the address of the element at the given position. Optionally
! 3253: this function also returns the address of the element's null indicator
! 3254: information.
! 3255:
! 3256: The following table describes for each collection element type
! 3257: what the corresponding element pointer type is. The element pointer
! 3258: is returned via the 'elem' parameter of OCICollGetElem().
! 3259:
! 3260: Element Type *elem is set to
! 3261: ----------------------- ---------------
! 3262: Oracle Number (OCINumber) OCINumber*
! 3263: Date (OCIDate) OCIDate*
! 3264: Variable-length string (OCIString*) OCIString**
! 3265: Variable-length raw (OCIRaw*) OCIRaw**
! 3266: object reference (OCIRef*) OCIRef**
! 3267: lob locator (OCILobLocator*) OCILobLocator**
! 3268: object type (e.g. person) person*
! 3269:
! 3270: The element pointer returned by OCICollGetElem() is in a form
! 3271: such that it can not only be used to access the
! 3272: element data but also is in a form that can be used as the target
! 3273: (i.e left-hand-side) of an assignment statement.
! 3274:
! 3275: For example, assume the user is iterating over the elements of
! 3276: a collection whose element type is object reference (OCIRef*). A call
! 3277: to OCICollGetElem() returns pointer to a reference handle
! 3278: (i.e. OCIRef**). After getting, the pointer to the collection
! 3279: element, the user may wish to modify it by assigning a new reference.
! 3280: This can be accomplished via the ref assignment function shown below:
! 3281:
! 3282: sword OCIRefAssign( OCIEnv *env, OCIError *err, CONST OCIRef *source,
! 3283: OCIRef **target );
! 3284:
! 3285: Note that the 'target' parameter of OCIRefAssign() is of type
! 3286: 'OCIRef**'. Hence OCICollGetElem() returns 'OCIRef**'.
! 3287: If '*target == NULL' a new ref will be allocated by OCIRefAssign()
! 3288: and returned via the 'target' parameter.
! 3289:
! 3290: Similarly, if the collection element was of type string (OCIString*),
! 3291: OCICollGetElem() returns pointer to string handle
! 3292: (i.e. OCIString**). If a new string is assigned, via
! 3293: OCIStringAssign() or OCIStringAssignText() the type of the target
! 3294: must be 'OCIString **'.
! 3295:
! 3296: If the collection element is of type Oracle number, OCICollGetElem()
! 3297: returns OCINumber*. The prototype of OCINumberAssign() is shown below:
! 3298:
! 3299: sword OCINumberAssign(OCIError *err, CONST OCINumber *from,
! 3300: OCINumber *to);
! 3301: RETURNS:
! 3302: OCI_SUCCESS if the function completes successfully.
! 3303: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3304: OCI_ERROR if
! 3305: any of the input parameters is null
! 3306: */
! 3307:
! 3308: /*----------------------- OCICollAssignElem ---------------------------------*/
! 3309:
! 3310: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3311: sword OCICollAssignElem(/*_ OCIEnv *env, OCIError *err, sb4 index,
! 3312: CONST dvoid *elem,
! 3313: CONST dvoid *elemind, OCIColl *coll _*/);
! 3314: #else /* ANSI C */
! 3315: sword OCICollAssignElem( OCIEnv *env, OCIError *err, sb4 index,
! 3316: CONST dvoid *elem,
! 3317: CONST dvoid *elemind, OCIColl *coll );
! 3318: #endif
! 3319: /*
! 3320: NAME: OCICollAssignElem - OCIColl ASsign Element
! 3321: PARAMETERS:
! 3322: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3323: err (IN/OUT) - error handle. If there is an error, it is
! 3324: recorded in 'err' and this function returns OCI_ERROR.
! 3325: The error recorded in 'err' can be retrieved by calling
! 3326: OCIErrorGet().
! 3327: index (IN) - index of the element whose is assigned to
! 3328: elem (IN) - element which is assigned from (source element)
! 3329: elemind (IN) [optional] - pointer to the element's null indicator
! 3330: information; if (elemind == NULL) then the null indicator
! 3331: information of the assigned element will be set to non-null.
! 3332: coll (IN/OUT) - collection to be updated
! 3333: DESCRIPTION:
! 3334: Assign the given element value 'elem' to the element at coll[index].
! 3335: If the collection is of type nested table, the element at the given
! 3336: index may not exist (i.e. may have been deleted). In this case, the
! 3337: given element is inserted at index 'index'.
! 3338: Otherwise, the element at index 'index' is updated with the value
! 3339: of 'elem'.
! 3340:
! 3341: Note that the given element is deep-copied and
! 3342: 'elem' is strictly an input parameter.
! 3343: RETURNS:
! 3344: OCI_SUCCESS if the function completes successfully.
! 3345: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3346: OCI_ERROR if
! 3347: any of the input parameters is null
! 3348: out of memory error
! 3349: given index is out of bounds of the given collection
! 3350: */
! 3351:
! 3352: /*--------------------------- OCICollAssign ---------------------------------*/
! 3353:
! 3354: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3355: sword OCICollAssign(/*_ OCIEnv *env, OCIError *err, CONST OCIColl *rhs,
! 3356: OCIColl *lhs _*/);
! 3357: #else /* ANSI C */
! 3358: sword OCICollAssign( OCIEnv *env, OCIError *err, CONST OCIColl *rhs,
! 3359: OCIColl *lhs );
! 3360: #endif
! 3361: /*
! 3362: NAME: OCICollAssign - OCIColl ASsiGn collection
! 3363: PARAMETERS:
! 3364: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3365: err (IN/OUT) - error handle. If there is an error, it is
! 3366: recorded in 'err' and this function returns OCI_ERROR.
! 3367: The error recorded in 'err' can be retrieved by calling
! 3368: OCIErrorGet().
! 3369: rhs (IN) - collection to be assigned from
! 3370: lhs (OUT) - collection to be assigned to
! 3371: DESCRIPTION:
! 3372: Assign 'rhs' to 'lhs'. The 'lhs' collection may be decreased or
! 3373: increased depending upon the size of 'rhs'. If the 'lhs' contains
! 3374: any elements then the elements will be deleted prior to the
! 3375: assignment. This function performs a deep-copy. The memory for the
! 3376: elements comes from the object cache.
! 3377:
! 3378: An error is returned if the element types of the lhs and rhs
! 3379: collections do not match. Also, an error is returned if the
! 3380: upper-bound of the lhs collection is less than the current number of
! 3381: elements in the rhs collection.
! 3382: RETURNS:
! 3383: OCI_SUCCESS if the function completes successfully.
! 3384: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3385: OCI_ERROR if
! 3386: any of the input parameters is null
! 3387: out of memory error
! 3388: type mis-match of lhs and rhs collections
! 3389: upper-bound of lhs collection is less than the current number of
! 3390: elements in the rhs collection
! 3391: */
! 3392:
! 3393: /*--------------------------- OCICollAppend ---------------------------------*/
! 3394:
! 3395: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3396: sword OCICollAppend(/*_ OCIEnv *env, OCIError *err, CONST dvoid *elem,
! 3397: CONST dvoid *elemind, OCIColl *coll _*/);
! 3398: #else /* ANSI C */
! 3399: sword OCICollAppend( OCIEnv *env, OCIError *err, CONST dvoid *elem,
! 3400: CONST dvoid *elemind, OCIColl *coll );
! 3401: #endif
! 3402: /*
! 3403: NAME: OCICollAppend - OCIColl APPend collection
! 3404: PARAMETERS:
! 3405: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3406: err (IN/OUT) - error handle. If there is an error, it is
! 3407: recorded in 'err' and this function returns OCI_ERROR.
! 3408: The error recorded in 'err' can be retrieved by calling
! 3409: OCIErrorGet().
! 3410: elem (IN) - pointer to the element which is appended to the end
! 3411: of the given collection
! 3412: elemind (IN) [optional] - pointer to the element's null indicator
! 3413: information; if (elemind == NULL) then the null indicator
! 3414: information of the appended element will be set to non-null.
! 3415: coll (IN/OUT) - updated collection
! 3416: DESCRIPTION:
! 3417: Append the given element to the end of the given collection.
! 3418: Appending an element is equivalent to:
! 3419: - increasing the size of the collection by 1 element
! 3420: - updating (deep-copying) the last element's data with the given
! 3421: element's data
! 3422:
! 3423: Note that the pointer to the given element 'elem' will not be saved
! 3424: by this function. So 'elem' is strictly an input parameter.
! 3425: An error is returned if the current size of the collection
! 3426: is equal to the max size (upper-bound) of the collection prior to
! 3427: appending the element.
! 3428: RETURNS:
! 3429: OCI_SUCCESS if the function completes successfully.
! 3430: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3431: OCI_ERROR if
! 3432: any of the input parameters is null
! 3433: out of memory error
! 3434: current size of collection == max size of the collection
! 3435: */
! 3436:
! 3437: /*----------------------------- OCICollTrim ---------------------------------*/
! 3438:
! 3439: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3440: sword OCICollTrim(/*_ OCIEnv *env, OCIError *err, sb4 trim_num,
! 3441: OCIColl *coll _*/);
! 3442: #else /* ANSI C */
! 3443: sword OCICollTrim( OCIEnv *env, OCIError *err, sb4 trim_num,
! 3444: OCIColl *coll );
! 3445: #endif
! 3446: /*
! 3447: NAME: OCICollTrim - OCIColl Trim elements from the end of the collection
! 3448: PARAMETERS:
! 3449: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3450: err (IN/OUT) - error handle. If there is an error, it is
! 3451: recorded in 'err' and this function returns OCI_ERROR.
! 3452: The error recorded in 'err' can be retrieved by calling
! 3453: OCIErrorGet().
! 3454: trim_num (IN) - number of elements to trim
! 3455: coll (IN/OUT) - 'trim_num' of elements are removed (freed) from the
! 3456: end of the collection
! 3457: DESCRIPTION:
! 3458: Trim the collection by the given number of elements. The elements are
! 3459: removed from the end of the collection.
! 3460:
! 3461: An error is returned if the 'trim_num' is greater than the current
! 3462: size of the collection.
! 3463: RETURNS:
! 3464: OCI_SUCCESS if the function completes successfully.
! 3465: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3466: OCI_ERROR if
! 3467: any of the input parameters is null
! 3468: 'trim_num' is greater than the current size of the collection.
! 3469: */
! 3470:
! 3471: /*--------------------------- OCICollIsLocator ------------------------------*/
! 3472:
! 3473: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3474: sword OCICollIsLocator(/*_ OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3475: boolean *result _*/);
! 3476: #else /* ANSI C */
! 3477: sword OCICollIsLocator(OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3478: boolean *result );
! 3479: #endif
! 3480: /*
! 3481: Name: OCICollIsLocator - OCIColl indicates whether a collection is locator
! 3482: based or not.
! 3483: Parameters:
! 3484: env(IN) - pointer to OCI environment handle
! 3485: err (IN/OUT) - error handle. If there is an error, it is
! 3486: recorded in 'err' and this function returns OCI_ERROR.
! 3487: The error recorded in 'err' can be retrieved by calling
! 3488: OCIErrorGet().
! 3489: coll (IN) - collection item.
! 3490: result (OUT) - TRUE if the collection item is a locator, FALSE
! 3491: otherwise
! 3492: Description:
! 3493: Returns TRUE in the result OUT parameter if the collection item is a
! 3494: locator, otherwise returns FALSE.
! 3495: Returns:
! 3496: OCI_SUCCESS if the function completes successfully.
! 3497: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3498: */
! 3499:
! 3500: /*---------------------------- OCIIterCreate --------------------------------*/
! 3501:
! 3502: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3503: sword OCIIterCreate(/*_ OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3504: OCIIter **itr _*/);
! 3505: #else /* ANSI C */
! 3506: sword OCIIterCreate( OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3507: OCIIter **itr );
! 3508: #endif
! 3509: /*
! 3510: NAME: OCIIterCreate - OCIColl Create an ITerator to scan the collection
! 3511: elements
! 3512: PARAMETERS:
! 3513: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3514: err (IN/OUT) - error handle. If there is an error, it is
! 3515: recorded in 'err' and this function returns OCI_ERROR.
! 3516: The error recorded in 'err' can be retrieved by calling
! 3517: OCIErrorGet().
! 3518: coll (IN) - collection which will be scanned; the different
! 3519: collection types are varray and nested table
! 3520: itr (OUT) - address to the allocated collection iterator is
! 3521: returned by this function
! 3522: DESCRIPTION:
! 3523: Create an iterator to scan the elements of the collection. The
! 3524: iterator is created in the object cache. The iterator is initialized
! 3525: to point to the beginning of the collection.
! 3526:
! 3527: If the next function (OCIIterNext) is called immediately
! 3528: after creating the iterator then the first element of the collection
! 3529: is returned.
! 3530: If the previous function (OCIIterPrev) is called immediately after
! 3531: creating the iterator then "at beginning of collection" error is
! 3532: returned.
! 3533: RETURNS:
! 3534: OCI_SUCCESS if the function completes successfully.
! 3535: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3536: OCI_ERROR if
! 3537: any of the input parameters is null
! 3538: out of memory error
! 3539: */
! 3540:
! 3541: /*----------------------------- OCIIterDelete ------------------------------*/
! 3542:
! 3543: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3544: sword OCIIterDelete(/*_ OCIEnv *env, OCIError *err, OCIIter **itr _*/);
! 3545: #else /* ANSI C */
! 3546: sword OCIIterDelete( OCIEnv *env, OCIError *err, OCIIter **itr );
! 3547: #endif
! 3548: /*
! 3549: NAME: OCIIterDelete - OCIColl Delete ITerator
! 3550: PARAMETERS:
! 3551: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3552: err (IN/OUT) - error handle. If there is an error, it is
! 3553: recorded in 'err' and this function returns OCI_ERROR.
! 3554: The error recorded in 'err' can be retrieved by calling
! 3555: OCIErrorGet().
! 3556: itr (IN/OUT) - the allocated collection iterator is destroyed and
! 3557: the 'itr' is set to NULL prior to returning
! 3558: DESCRIPTION:
! 3559: Delete the iterator which was previously created by a call to
! 3560: OCIIterCreate.
! 3561: RETURNS:
! 3562: OCI_SUCCESS if the function completes successfully.
! 3563: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3564: OCI_ERROR if
! 3565: any of the input parameters is null
! 3566: to be discovered
! 3567: */
! 3568:
! 3569: /*----------------------------- OCIIterInit ---------------------------------*/
! 3570:
! 3571: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3572: sword OCIIterInit(/*_ OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3573: OCIIter *itr _*/);
! 3574: #else /* ANSI C */
! 3575: sword OCIIterInit( OCIEnv *env, OCIError *err, CONST OCIColl *coll,
! 3576: OCIIter *itr );
! 3577: #endif
! 3578: /*
! 3579: NAME: OCIIterInit - OCIColl Initialize ITerator to scan the given
! 3580: collection
! 3581: PARAMETERS:
! 3582: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3583: err (IN/OUT) - error handle. If there is an error, it is
! 3584: recorded in 'err' and this function returns OCI_ERROR.
! 3585: The error recorded in 'err' can be retrieved by calling
! 3586: OCIErrorGet().
! 3587: coll (IN) - collection which will be scanned; the different
! 3588: collection types are varray and nested table
! 3589: itr (IN/OUT) - pointer to an allocated collection iterator
! 3590: DESCRIPTION:
! 3591: Initializes the given iterator to point to the beginning of the
! 3592: given collection. This function can be used to:
! 3593:
! 3594: a. reset an iterator to point back to the beginning of the collection
! 3595: b. reuse an allocated iterator to scan a different collection
! 3596: RETURNS:
! 3597: OCI_SUCCESS if the function completes successfully.
! 3598: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3599: OCI_ERROR if
! 3600: any of the input parameters is null
! 3601: */
! 3602:
! 3603: /*------------------------ OCIIterGetCurrent --------------------------------*/
! 3604:
! 3605: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3606: sword OCIIterGetCurrent(/*_ OCIEnv *env, OCIError *err, CONST OCIIter *itr,
! 3607: dvoid **elem, dvoid **elemind _*/);
! 3608: #else /* ANSI C */
! 3609: sword OCIIterGetCurrent( OCIEnv *env, OCIError *err, CONST OCIIter *itr,
! 3610: dvoid **elem, dvoid **elemind );
! 3611: #endif
! 3612: /*
! 3613: NAME: OCIIterGetCurrent - OCIColl Iterator based, get CURrent collection
! 3614: element
! 3615: PARAMETERS:
! 3616: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3617: err (IN/OUT) - error handle. If there is an error, it is
! 3618: recorded in 'err' and this function returns OCI_ERROR.
! 3619: The error recorded in 'err' can be retrieved by calling
! 3620: OCIErrorGet().
! 3621: itr (IN) - iterator which points to the current element
! 3622: elem (OUT) - address of the element pointed by the iterator is returned
! 3623: elemind (OUT) [optional] - address of the element's null indicator
! 3624: information is returned; if (elemind == NULL) then the null
! 3625: indicator information will NOT be returned
! 3626: DESCRIPTION:
! 3627: Returns pointer to the current element and its corresponding null
! 3628: information.
! 3629: RETURNS:
! 3630: OCI_SUCCESS if the function completes successfully.
! 3631: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3632: OCI_ERROR if
! 3633: any of the input parameters is null
! 3634: */
! 3635:
! 3636: /*------------------------------ OCIIterNext --------------------------------*/
! 3637:
! 3638: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3639: sword OCIIterNext(/*_ OCIEnv *env, OCIError *err, OCIIter *itr,
! 3640: dvoid **elem, dvoid **elemind, boolean *eoc _*/);
! 3641: #else /* ANSI C */
! 3642: sword OCIIterNext( OCIEnv *env, OCIError *err, OCIIter *itr,
! 3643: dvoid **elem, dvoid **elemind, boolean *eoc );
! 3644: #endif
! 3645: /*
! 3646: NAME: OCIIterNext - OCIColl Iterator based, get NeXT collection element
! 3647: PARAMETERS:
! 3648: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3649: err (IN/OUT) - error handle. If there is an error, it is
! 3650: recorded in 'err' and this function returns OCI_ERROR.
! 3651: The error recorded in 'err' can be retrieved by calling
! 3652: OCIErrorGet().
! 3653: itr (IN/OUT) - iterator is updated to point to the next element
! 3654: elem (OUT) - after updating the iterator to point to the next element,
! 3655: address of the element is returned
! 3656: elemind (OUT) [optional] - address of the element's null indicator
! 3657: information is returned; if (elemind == NULL) then the null
! 3658: indicator information will NOT be returned
! 3659: eoc (OUT) - TRUE if iterator is at End Of Collection (i.e. next
! 3660: element does not exist) else FALSE
! 3661: DESCRIPTION:
! 3662: Returns pointer to the next element and its corresponding null
! 3663: information. The iterator is updated to point to the next element.
! 3664:
! 3665: If the iterator is pointing to the last element of the collection
! 3666: prior to executing this function, then calling this function will
! 3667: set eoc flag to TRUE. The iterator will be left unchanged in this
! 3668: situation.
! 3669: RETURNS:
! 3670: OCI_SUCCESS if the function completes successfully.
! 3671: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3672: OCI_ERROR if
! 3673: any of the input parameters is null
! 3674: */
! 3675:
! 3676: /*------------------------------ OCIIterPrev --------------------------------*/
! 3677:
! 3678: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3679: sword OCIIterPrev(/*_ OCIEnv *env, OCIError *err, OCIIter *itr,
! 3680: dvoid **elem, dvoid **elemind, boolean *boc _*/);
! 3681: #else /* ANSI C */
! 3682: sword OCIIterPrev( OCIEnv *env, OCIError *err, OCIIter *itr,
! 3683: dvoid **elem, dvoid **elemind, boolean *boc );
! 3684: #endif
! 3685: /*
! 3686: NAME: OCIIterPrev - OCIColl Iterator based, get PReVious collection element
! 3687: PARAMETERS:
! 3688: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3689: err (IN/OUT) - error handle. If there is an error, it is
! 3690: recorded in 'err' and this function returns OCI_ERROR.
! 3691: The error recorded in 'err' can be retrieved by calling
! 3692: OCIErrorGet().
! 3693: itr (IN/OUT) - iterator is updated to point to the previous
! 3694: element
! 3695: elem (OUT) - after updating the iterator to point to the previous
! 3696: element, address of the element is returned
! 3697: elemind (OUT) [optional] - address of the element's null indicator
! 3698: information is returned; if (elemind == NULL) then the null
! 3699: indicator information will NOT be returned
! 3700: boc (OUT) - TRUE if iterator is at Beginning Of Collection (i.e.
! 3701: previous element does not exist) else FALSE.
! 3702: DESCRIPTION:
! 3703: Returns pointer to the previous element and its corresponding null
! 3704: information. The iterator is updated to point to the previous element.
! 3705:
! 3706: If the iterator is pointing to the first element of the collection
! 3707: prior to executing this function, then calling this function will
! 3708: set 'boc' to TRUE. The iterator will be left unchanged in this
! 3709: situation.
! 3710: RETURNS:
! 3711: OCI_SUCCESS if the function completes successfully.
! 3712: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3713: OCI_ERROR if
! 3714: any of the input parameters is null
! 3715: */
! 3716:
! 3717: /*****************************************************************************/
! 3718: /* FUNCTIONS WHICH OPERATE ONLY ON NESTED TABLE OCITable*() */
! 3719: /*****************************************************************************/
! 3720:
! 3721: /*---------------------------- OCITableSize ---------------------------------*/
! 3722:
! 3723: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3724: sword OCITableSize(/*_ OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3725: sb4 *size _*/);
! 3726: #else /* ANSI C */
! 3727: sword OCITableSize( OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3728: sb4 *size);
! 3729: #endif
! 3730: /*
! 3731: NAME: OCITableSize - OCITable return current SIZe of the given
! 3732: nested table (not including deleted elements)
! 3733: PARAMETERS:
! 3734: env(IN) - pointer to OCI environment handle
! 3735: err (IN/OUT) - error handle. If there is an error, it is
! 3736: recorded in 'err' and this function returns OCI_ERROR.
! 3737: The error recorded in 'err' can be retrieved by calling
! 3738: OCIErrorGet().
! 3739: tbl (IN) - nested table whose number of elements is returned
! 3740: size (OUT) - current number of elements in the nested table. The count
! 3741: does not include deleted elements.
! 3742: DESCRIPTION:
! 3743: Returns the count of elements in the given nested table.
! 3744:
! 3745: The count returned by OCITableSize() will be decremented upon
! 3746: deleting elements from the nested table. So, this count DOES NOT
! 3747: includes any "holes" created by deleting elements.
! 3748: For example:
! 3749:
! 3750: OCITableSize(...);
! 3751: // assume 'size' returned is equal to 5
! 3752: OCITableDelete(...); // delete one element
! 3753: OCITableSize(...);
! 3754: // 'size' returned will be equal to 4
! 3755:
! 3756: To get the count plus the count of deleted elements use
! 3757: OCICollSize(). Continuing the above example,
! 3758:
! 3759: OCICollSize(...)
! 3760: // 'size' returned will still be equal to 5
! 3761: RETURNS:
! 3762: OCI_SUCCESS if the function completes successfully.
! 3763: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3764: OCI_ERROR if
! 3765: error during loading of nested table into object cache
! 3766: any of the input parameters is null
! 3767: */
! 3768:
! 3769: /*---------------------- OCITableExists ---------------------------------*/
! 3770:
! 3771: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3772: sword OCITableExists(/*_ OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3773: sb4 index, boolean *exists _*/);
! 3774: #else /* ANSI C */
! 3775: sword OCITableExists( OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3776: sb4 index, boolean *exists );
! 3777: #endif
! 3778: /*
! 3779: NAME: OCITableExists - OCITable test whether element at the given index
! 3780: EXIsts
! 3781: PARAMETERS:
! 3782: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3783: err (IN/OUT) - error handle. If there is an error, it is
! 3784: recorded in 'err' and this function returns OCI_ERROR.
! 3785: The error recorded in 'err' can be retrieved by calling
! 3786: OCIErrorGet().
! 3787: tbl (IN) - table in which the given index is checked
! 3788: index (IN) - index of the element which is checked for existence
! 3789: exists (OUT) - set to TRUE if element at given 'index' exists
! 3790: else set to FALSE
! 3791: DESCRIPTION:
! 3792: Test whether an element exists at the given 'index'.
! 3793: RETURNS:
! 3794: OCI_SUCCESS if the function completes successfully.
! 3795: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3796: OCI_ERROR if
! 3797: any of the input parameters is null
! 3798: */
! 3799:
! 3800: /*--------------------------- OCITableDelete -------------------------------*/
! 3801:
! 3802: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3803: sword OCITableDelete(/*_ OCIEnv *env, OCIError *err, sb4 index,
! 3804: OCITable *tbl _*/);
! 3805: #else /* ANSI C */
! 3806: sword OCITableDelete( OCIEnv *env, OCIError *err, sb4 index,
! 3807: OCITable *tbl );
! 3808: #endif
! 3809: /*
! 3810: NAME: OCITableDelete - OCITable DELete element at the specified index
! 3811: PARAMETERS:
! 3812: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3813: err (IN/OUT) - error handle. If there is an error, it is
! 3814: recorded in 'err' and this function returns OCI_ERROR.
! 3815: The error recorded in 'err' can be retrieved by calling
! 3816: OCIErrorGet().
! 3817: index (IN) - index of the element which must be deleted
! 3818: tbl (IN) - table whose element is deleted
! 3819: DESCRIPTION:
! 3820: Delete the element at the given 'index'. Note that the position
! 3821: ordinals of the remaining elements of the table is not changed by the
! 3822: delete operation. So delete creates "holes" in the table.
! 3823:
! 3824: An error is returned if the element at the specified 'index' has
! 3825: been previously deleted.
! 3826: RETURNS:
! 3827: OCI_SUCCESS if the function completes successfully.
! 3828: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3829: OCI_ERROR if
! 3830: any of the input parameters is null
! 3831: given index is not valid
! 3832: */
! 3833:
! 3834: /*--------------------------- OCITableFirst ---------------------------------*/
! 3835:
! 3836: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3837: sword OCITableFirst(/*_ OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3838: sb4 *index _*/);
! 3839: #else /* ANSI C */
! 3840: sword OCITableFirst( OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3841: sb4 *index );
! 3842: #endif
! 3843: /*
! 3844: NAME: OCITableFirst - OCITable return FirST index of table
! 3845: PARAMETERS:
! 3846: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3847: err (IN/OUT) - error handle. If there is an error, it is
! 3848: recorded in 'err' and this function returns OCI_ERROR.
! 3849: The error recorded in 'err' can be retrieved by calling
! 3850: OCIErrorGet().
! 3851: tbl (IN) - table which is scanned
! 3852: index (OUT) - first index of the element which exists in the given
! 3853: table is returned
! 3854: DESCRIPTION:
! 3855: Return the first index of the element which exists in the given
! 3856: table.
! 3857: RETURNS:
! 3858: OCI_SUCCESS if the function completes successfully.
! 3859: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3860: OCI_ERROR if
! 3861: table is empty
! 3862: */
! 3863:
! 3864: /*---------------------------- OCITableLast ---------------------------------*/
! 3865:
! 3866: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3867: sword OCITableLast(/*_ OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3868: sb4 *index _*/);
! 3869: #else /* ANSI C */
! 3870: sword OCITableLast( OCIEnv *env, OCIError *err, CONST OCITable *tbl,
! 3871: sb4 *index );
! 3872: #endif
! 3873: /*
! 3874: NAME: OCITableFirst - OCITable return LaST index of table
! 3875: PARAMETERS:
! 3876: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3877: err (IN/OUT) - error handle. If there is an error, it is
! 3878: recorded in 'err' and this function returns OCI_ERROR.
! 3879: The error recorded in 'err' can be retrieved by calling
! 3880: OCIErrorGet().
! 3881: tbl (IN) - table which is scanned
! 3882: index (OUT) - last index of the element which exists in the given
! 3883: table is returned
! 3884: DESCRIPTION:
! 3885: Return the last index of the element which exists in the given
! 3886: table.
! 3887: RETURNS:
! 3888: OCI_SUCCESS if the function completes successfully.
! 3889: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3890: OCI_ERROR if
! 3891: table is empty
! 3892: */
! 3893:
! 3894: /*---------------------------- OCITableNext ---------------------------------*/
! 3895:
! 3896: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3897: sword OCITableNext(/*_ OCIEnv *env, OCIError *err, sb4 index,
! 3898: CONST OCITable *tbl, sb4 *next_index,
! 3899: boolean *exists _*/);
! 3900: #else /* ANSI C */
! 3901: sword OCITableNext( OCIEnv *env, OCIError *err, sb4 index,
! 3902: CONST OCITable *tbl, sb4 *next_index,
! 3903: boolean *exists );
! 3904: #endif
! 3905: /*
! 3906: NAME: OCITableNext - OCITable return NeXT available index of table
! 3907: PARAMETERS:
! 3908: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3909: err (IN/OUT) - error handle. If there is an error, it is
! 3910: recorded in 'err' and this function returns OCI_ERROR.
! 3911: The error recorded in 'err' can be retrieved by calling
! 3912: OCIErrorGet().
! 3913: index (IN) - starting at 'index' the index of the next element
! 3914: which exists is returned
! 3915: tbl (IN) - table which is scanned
! 3916: next_index (OUT) - index of the next element which exists
! 3917: is returned
! 3918: exists (OUT) - FALSE if no next index available else TRUE
! 3919: DESCRIPTION:
! 3920: Return the smallest position j, greater than 'index', such that
! 3921: exists(j) is TRUE.
! 3922: RETURNS:
! 3923: OCI_SUCCESS if the function completes successfully.
! 3924: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3925: OCI_ERROR if
! 3926: no next index available
! 3927: */
! 3928:
! 3929: /*---------------------------- OCITablePrev ---------------------------------*/
! 3930:
! 3931: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 3932: sword OCITablePrev(/*_ OCIEnv *env, OCIError *err, sb4 index,
! 3933: CONST OCITable *tbl, sb4 *prev_index,
! 3934: boolean *exists _*/);
! 3935: #else /* ANSI C */
! 3936: sword OCITablePrev( OCIEnv *env, OCIError *err, sb4 index,
! 3937: CONST OCITable *tbl, sb4 *prev_index,
! 3938: boolean *exists );
! 3939: #endif
! 3940: /*
! 3941: NAME: OCITablePrev - OCITable return PReVious available index of table
! 3942: PARAMETERS:
! 3943: env (IN/OUT) - OCI environment handle initialized in object mode.
! 3944: err (IN/OUT) - error handle. If there is an error, it is
! 3945: recorded in 'err' and this function returns OCI_ERROR.
! 3946: The error recorded in 'err' can be retrieved by calling
! 3947: OCIErrorGet().
! 3948: index (IN) - starting at 'index' the index of the previous element
! 3949: which exists is returned
! 3950: tbl (IN) - table which is scanned
! 3951: prev_index (OUT) - index of the previous element which exists
! 3952: is returned
! 3953: exists (OUT) - FALSE if no next index available else TRUE
! 3954: DESCRIPTION:
! 3955: Return the largest position j, less than 'index', such that
! 3956: exists(j) is TRUE.
! 3957: RETURNS:
! 3958: OCI_SUCCESS if the function completes successfully.
! 3959: OCI_INVALID_HANDLE if 'env' or 'err' is NULL.
! 3960: OCI_ERROR if
! 3961: no previous index available
! 3962: */
! 3963:
! 3964: /*------------------------ OCINumberToLnx -----------------------------------*/
! 3965: /* void OCINumberToLnx(/o_ OCINumber *num _o/); */
! 3966:
! 3967: #define OCINumberToLnx(num) ((lnxnum_t *)num)
! 3968:
! 3969: /*
! 3970: NAME: OCINumberToLnx
! 3971: PARAMETERS:
! 3972: num (IN) - OCINumber to convert ;
! 3973: DESCRIPTION:
! 3974: Converts OCINumber to its internal lnx format
! 3975: This is not to be used in Public interfaces , but
! 3976: has been provided due to special requirements from
! 3977: SQLPLUS development group as they require to call
! 3978: Core funtions directly .
! 3979: */
! 3980:
! 3981: #endif /* ORL_ORACLE */
E-mail: