增加instant client for osx 64位版本
diff --git a/sdk/include/orid.h b/sdk/include/orid.h
new file mode 100644
index 0000000..a105f64
--- /dev/null
+++ b/sdk/include/orid.h
@@ -0,0 +1,373 @@
+/* Copyright (c) 1994, 2006, Oracle. All rights reserved. */
+
+/*
+ Author: Tin Nguyen
+ Date: 02/07/94
+ Source documents: "Functional Specification for C Object Interface, 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: [ date of the last revision of the .h file ]
+
+ Note to the user of this header file:
+
+ Anything in this header file that is marked private is not supported and
+ must not be used. Private sections are included in the header file to
+ improve internal maintenance.
+
+ NAME
+
+ ORID - Oracle Object Interface for Dynamic Data Access
+
+ DESCRIPTION
+
+ This file contains declarations for C object interface functions including
+ the dynamic object data access operations that allow callers to dynamically
+ access and manipulate objects; these operations include getting and setting
+ attributes of an object. These dynamic object operations are for accessing
+ and manipulation objects whose types are not known at compile-time.
+
+ RELATED DOCUMENTS
+
+ Functional Specification for C Object Interface / Object Management System
+
+ PUBLIC FUNCTIONS
+
+ OCIObjectSetAttr - ORID SET attribute value
+ OCIObjectGetAttr - ORID GET attribute value
+
+ PRIVATE FUNCTIONS
+
+ None
+
+ EXAMPLES
+
+ EXAMPLE 1
+
+ /o
+ o This example illustrates how an interative program can use the dynamic
+ o attribute access to display and modify attributes of an ADT instance.
+ o The interactive program does not know the type of the object at
+ o compile time.
+ o/
+
+ void display(adt_ref, object, null_struct, names, names_count,
+ names_length, indexes, indexes_count)
+ {
+ /o Pin the ADT o/
+ if (OCIObjectPin(env, &adt_ref, OROOPOCUR, OROOPDTRA, OROOLMNON, &adt)
+ != OROSTASUC)
+ /o error handling code o/
+
+ /o
+ o Call the type manager to obtain all the attributes in the object.
+ o Display the content of each attribute in the ADT instance. If the
+ o attribute is an array, display each element of the array. If the
+ o attribute is an ADT instance, recursively call this routine to
+ o display the embedded ADT instance.
+ o/
+ numAttrs = OCITypeAttrs(env, adt);
+ for (i= 1; i <= numAttrs; i++)
+ {
+ /o get attribute descriptor o/
+ if (ortgabp(env, adt, i, &ado_ref, &ado) != OROSTASUC)
+ /o error handling code o/
+
+ /o get attribute name o/
+ names[names_count] = OCITypeElemName(env, ado,
+ &names_length[names_count]);
+
+ /o dynamically get the attr o/
+ if (OCIObjectGetAttr(env, object, null_struct, 0, adt_ref, names,
+ names_length, names_count+1, indexes, indexes_count, 0,
+ &null, &null_info, &attr) != OROSTASUC)
+ /o error handling code o/
+
+ /o check if attribute is null o/
+ if (null) continue;
+
+ /o get typecode of attribute o/
+ typecode = OCITypeElemTypeCode(env, ado);
+
+ /o if attribute is a varray, display each element in varray o/
+ if (typecode == OCI_TYPECODE_VARRAY)
+ {
+ /o get the reference to the type of the element of the array o/
+ if (OCITypeElemParameterizedTyper(env, ado, &attr_type_ref)
+ != OROSTASUC)
+ /o error handling code o/
+
+ /o get the size of array o/
+ if (orlasiz(env, &attr_type_ref, (orlva *)attr,
+ &numElm) != OROSTASUC)
+ /o error handling code o/
+
+ /o get the typecode of the element of the array o/
+ if (ortty2r(env, attr_type_ref, &typecode) != OROSTASUC)
+ /o error handling code o/
+
+ /o iterate the array o/
+ for (j=0; j < numElm; j++)
+ {
+ /o get an element in the array o/
+ if (OCIObjectGetAttr(env, attr, null_info, j+1, attr_type_ref,
+ names, names_length, 0, indexes, 0, 0, &null, &null_info,
+ &element) != OROSTASUC)
+ /o error handling code o/
+
+ /o check if element is null o/
+ if (null) continue;
+
+ /o if attr is an ADT instance, recursively call this routine o/
+ if (typecode == OCI_TYPECODE_ADT || typecode ==
+ OCI_TYPECODE_UNNAMEDADT)
+ {
+ /o display the element as an adt o/
+ display(attr_type_ref, element, null_info, names, lengths,
+ 0, indexes, 0);
+ }
+
+ /o if attribute is scalar, print the value to the screen o/
+ else output_to_screen(element, typecode);
+ }
+ }
+
+ /o if attribute is an ADT instance, recursively call this routine o/
+ else if (typecode == OCI_TYPECODE_ADT || typecode ==
+ OCI_TYPECODE_UNNAMEDADT)
+ {
+ /o get the type ref of the attribute o/
+ if (ortgarf(env, ado, &attr_type_ref) != OROSTASUC)
+ /o error handling code o/
+
+ display(attr_type_ref, attr, null_info, 0, names, 0, names_length,
+ indexes, 0);
+ }
+
+ /o if attribute is scalar, print the value to the screen o/
+ else output_to_screen(attr, typecode);
+ }
+ }
+
+ /o ******** main routine *********** o/
+ ....
+
+ /o
+ o Allocate the arrays for storing the path expression
+ o/
+
+ /o get the tdo of type 'long' o/
+ if (orttypget(&env, con, "SYS", sizeof("SYS"), "SINT32", sizeof("SINT32"),
+ OROOPDSES, &long_ref, &long_tdo) != OROSTASUC)
+ /o error handling code o/
+
+ /o get the tdo of type 'varchar' o/
+ if (orttypget(&env, con, "SYS", sizeof("SYS"), "SQL_VARCHAR2",
+ sizeof("SQL_VARCHAR2"), OROOPDSES, &vchar_ref, &vchar_tdo)
+ != OROSTASUC)
+ /o error handling code o/
+
+ /o allocate the varrays for the path expression o/
+ if (orlalloc(env, &vchar_ref, MAX_ARR_SIZE, &attr_names) != OROSTASUC)
+ /o error handling code o/
+
+ if (orlalloc(env, &long_ref, MAX_ARR_SIZE, &attr_name_lengths)
+ != OROSTASUC)
+ /o error handling code o/
+
+ if (orlalloc(env, &long_ref, MAX_ARR_SIZE, &attr_name_indexes)
+ != OROSTASUC)
+ /o error handling code o/
+
+ /o
+ o Get an ADT instance. The ref to the ADT instance can be obtained
+ o by through ORI or OSCI.
+ o/
+ if (OCIObjectPin(env, &obj_ref, OROOPOCUR, OROOPDTRA, OROOLMUPD, &object)
+ != OROSTASUC)
+ /o error handling code o/
+
+ /o get the null structure of the ADT instance o/
+ if (OCIObjectGetInd(gp, object, &null_struct) != OROSTASUC)
+ /o error handling code o/
+
+ /o
+ o Get the type of the ADT instance
+ o/
+
+ /o find out the type of the ADT instance o/
+ if (oriogto(env, object, &adt_ref) != OROSTASUC)
+ /o error handling code o/
+
+ /o display the object o/
+ display(adt_ref, object, null_struct, attr_names, 0, attr_names_lengths,
+ attr_names_indexes, 0);
+
+ /o After the object is displayed, the program waits for the user to
+ o respond. The user modifies the values of an attribute and the
+ o program generates a path expression for the attribute and calls
+ o OCIObjectSetAttr() to set the value.
+ o/
+
+ if (OCIObjectSetAttr(env, object, null_struct, adt_ref,
+ (text **)attr_names, (ub4 *)attr_name_lengths,
+ attr_names_count, (ub4 *)attr_array_indexes,
+ attr_array_indexes_count,
+ (void *)0, FALSE, (void *)value) != OROSTASUC)
+ /o error handling code o/
+
+ END OF EXAMPLE 1
+
+ NOTES
+
+ This file has been subsetted to contain only the routines that will
+ be in the first release.
+
+ MODIFIED
+ dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
+ srseshad 03/12/03 - convert oci public api to ansi
+ aahluwal 06/03/02 - bug 2360115
+ bpalaval 02/09/01 - Change text to oratext.
+ whe 09/01/99 - 976457:check __cplusplus for C++ code
+ sthakur 09/18/97 - collection indexing not supported
+ cxcheng 08/05/97 - fix compile with short names
+ 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
+ cxcheng 10/17/96 - final renaming of functions
+ jboonleu 10/07/96 - beautify with OCI long names
+ cxcheng 10/07/96 - change short names to long names for readability
+ jboonleu 09/27/96 - fix lint
+ jwijaya 07/03/96 - add ANSI prototypes
+ jboonleu 04/13/95 - new interface
+ jwijaya 10/11/94 - fix the sccs header and add namespace
+ tanguyen 08/22/94 - fix example
+ tanguyen 08/09/94 - remove Sccsid declaration
+ tanguyen 07/20/94 - fix OCIObjectSetAttr and OCIObjectGetAttr to
+ use position descriptor
+ tanguyen 07/18/94 - change 'object' type to become ptr to object
+ tanguyen 06/30/94 - Fix the ORID_ORACLE ifdef
+ tanguyen 06/27/94 - update to template format
+ skotsovo 05/12/94 - replace ado with attribute position
+ jweisz 05/11/94 - test new checkin facility
+ jwijaya 05/05/94 - orienv/ref/typ -> oroenv/ref/typ
+ jwijaya 02/07/94 - Creation
+
+*/
+
+#ifndef ORATYPES
+#include <oratypes.h>
+#endif
+#ifndef ORO_ORACLE
+#include <oro.h>
+#endif
+#ifndef OCI_ORACLE
+#include <oci.h>
+#endif
+
+#ifndef ORID_ORACLE
+#define ORID_ORACLE
+
+#ifdef SLSHORTNAME
+
+#define OCIObjectSetAttr oridset
+#define OCIObjectGetAttr oridget
+
+#endif /* SLSHORTNAME */
+
+/*---------------------------------------------------------------------------*/
+/* PUBLIC FUNCTIONS */
+/*---------------------------------------------------------------------------*/
+
+/*-------------------------- OCIObjectSetAttr ----------------------------*/
+sword OCIObjectSetAttr( OCIEnv *env, OCIError *err, void *instance,
+ void *null_struct, struct OCIType *tdo,
+ const oratext **names, const ub4 *lengths,
+ const ub4 name_count, const ub4 *indexes,
+ const ub4 index_count, const OCIInd null_status,
+ const void *attr_null_struct, const void *attr_value );
+/*
+ NAME: OCIObjectSetAttr - ORID SET value
+ PARAMETERS:
+ env (IN) - OCI environment handle initialized in object mode
+ err (IN) - 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().
+ instance (IN) - pointer to an ADT instance
+ null_struct (IN) - the null structure of the ADT instance or array
+ tdo (IN) - pointer to the TDO
+ names (IN) - array of attribute names. This is used to specify
+ the names of the attributes in the path expression.
+ lengths (IN) - array of lengths of attribute names.
+ name_count (IN) - number of element in the array 'names'.
+ indexes (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4 *)0.
+ index_count (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4)0.
+ attr_null_status (IN) - the null status of the attribute if the type of
+ attribute is primitive.
+ attr_null_struct (IN) - the null structure of an ADT or collection
+ attribute.
+ attr_value (IN) - pointer to the attribute value.
+ REQUIRES:
+ DESCRIPTION:
+ This function set the attribute of the given object with the given
+ value. The position of the attribute is specified as a path
+ expression which is an array of names and an array of indexes.
+ RETURNS:
+ one of OROSTA*
+ EXAMPLES:
+ For path expression stanford.cs.stu[5].addr, the arrays will look like
+ names = {"stanford", "cs", "stu", "addr"}
+ lengths = {8, 2, 3, 4}
+ indexes = {5}
+
+ Also see the above example.
+ */
+
+/*-------------------------- OCIObjectGetAttr ----------------------------*/
+sword OCIObjectGetAttr( OCIEnv *env, OCIError *err, void *instance,
+ void *null_struct, struct OCIType *tdo,
+ const oratext **names, const ub4 *lengths,
+ const ub4 name_count, const ub4 *indexes,
+ const ub4 index_count, OCIInd *attr_null_status,
+ void **attr_null_struct, void **attr_value,
+ struct OCIType **attr_tdo );
+/*
+ NAME: OCIObjectGetAttr - ORID GET value
+ PARAMETERS:
+ env (IN) - OCI environment handle initialized in object mode
+ err (IN) - 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().
+ instance (IN) - pointer to an ADT instance
+ null_struct (IN) - the null structure of the ADT instance or array
+ tdo (IN) - pointer to the TDO
+ names (IN) - array of attribute names. This is used to specify
+ the names of the attributes in the path expression.
+ lengths (IN) - array of lengths of attribute names.
+ name_count (IN) - number of element in the array 'names'.
+ indexes (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4 *)0.
+ index_count (IN) [OPTIONAL] - currently NOT SUPPORTED, pass (ub4)0.
+ attr_null_status (OUT) - the null status of the attribute if the type
+ of attribute is primitive.
+ attr_null_struct (OUT) - the null structure of an ADT or collection
+ attribute.
+ attr_value (OUT) - pointer to the attribute value.
+ attr_tdo (OUT) - pointer to the TDO of the attribute.
+ REQUIRES:
+ - a valid OCI environment handle must be given.
+ DESCRIPTION:
+ This function gets a value from an ADT instance or from an array.
+ If the parameter 'instance' points to an ADT instance, then the path
+ expression specifies the location of the attribute in the ADT.
+ It is assumed that the object is pinned and that the value returned
+ is valid until the object is unpinned.
+ RETURNS:
+ one of OROSTA*
+ EXAMPLES:
+ See example in OCIObjectSetAttr(). Also see the above example.
+ */
+
+#endif /* ORID_ORACLE */