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