📄 ori.h
字号:
( varchar2 name; number department; number num_of_students; ); OBJECT TYPE course ( varchar2 name; number grade; ); OBJECT TYPE student ( vstring name; number department; ref advisor; /o advisor is a professor o/ collection courses; ); EXAMPLE 1 Here is a set of examples to illustrate the usages of some of the orio and oric functions. OCIenv *env; /o OCI environment handle o/ OCIError *err; /o OCI error handle o/ OCISvcCtx *svc; /o OCI service handle o/ dvoid *stu_tbl; /o pointer to the student table o/ OCIType *stu_tdo; /o student type tdo o/ OCIRef *stu2_ref; /o object reference to student object o/ student *stu1; /o pointer to the student object o/ student *stu2; /o pointer to the student object o/ professor *pro; /o pointer to the professor object o/ /o Initialize the OCI environment handle, error handle and service handle and login to the database o/ ... /o CREATE A PERSISTENT OBJECT o/ /o get the table object of student o/ if (OCIObjectPinTable(env, err, svc, "ORACLEU", sizeof("ORACLEU"), "STUDENT_TABLE", sizeof("STUDENT_TABLE"), (OCIRef *)0, OCI_DURATION_NULL, &stu_tbl) != OCI_SUCCESS) /o error handling code o/ /o get type object of student o/ if (OCITypeByName(env, err, svc, "ORACLEU", sizeof("ORACLEU"), "STUDENT", sizeof("STUDENT"), OCI_DURATION_NULL, OCI_TYPEGET_HEADER, &stu_tdo) != OCI_SUCCESS) /o error handling code o/ /o create a persistent object 'mark' (of type student) o/ if (OCIObjectNew(env, err, svc, OCI_TYPECODE_ADT, stu_tdo, stu_tbl, OCI_DURATION_TRANS, (ub1)FALSE, (dvoid **)&stu1) != OCI_SUCCESS) /o error handling code o/ /o RETRIEVE OBJECTS IN PERSISTENT STORES o/ /o Use OCI to retrieve a reference to student object 'joe'. o The retrieved reference is bound to the variable stu2_ref. o/ /o pin/retrieve the student "joe" by reference o/ if (OCIObjectPin(env, err, &stu2_ref, (OCIComplexObject *)0, OCI_PIN_ANY, OCI_DURATION_TRANS, OCI_LOCK_X, &stu2) != OCI_SUCCESS) /o error handling code o/ /o pin/retrieve the advisor of student "joe" by reference o/ if (OCIObjectPin(env, err, &stu2->advisor, (OCIComplexObject *)0, OCI_PIN_ANY, OCI_DURATION_TRANS, OCI_LOCK_X, &pro) != OCI_SUCCESS) /o error handling code o/ /o MODIFY OBJECTS o/ /o initialize the newly created object "mark" o/ DISCARD OCIStringAssignText(env, err, "mark", sizeof("mark"), &stu1->name); department = 522; DISCARD OCINumberFromInt(err, &department, sizeof(department), OCI_NUMBER_UNSIGNED, &stu1->department); /o assign advisor to student "mark" o/ DISCARD OCIRefAssign(env, err, &stu2->advisor, &stu1->advisor); /o update student "joe". o/ department = 533; DISCARD OCINumberFromInt(err, &department, sizeof(department), OCI_NUMBER_UNSIGNED, &stu2->department); DISCARD OCIObjectMarkUpdate(env, err, stu2); /o UNPIN OBJECTS AFTER FINSIHED PROCESSING THEM o/ /o unpin the student object "mark" o/ if (OCIObjectUnpin(env, err, stu1) != OCI_SUCCESS) /o error handling code o/ /o unpin the student object "joe" o/ if (OCIObjectUnpin(env, err, stu2) != OCI_SUCCESS) /o error handling code o/ /o unpin the professor object o/ if (OCIObjectUnpin(env, err, pro) != OCI_SUCCESS) /o error handling code o/ /o unpin the type object o/ if (OCIObjectUnpin(env, err, stu_tdo) != OCI_SUCCESS) /o error handling code o/ /o unpin the table object o/ if (OCIObjectUnpin(env, err, stu_tbl) != OCI_SUCCESS) /o error handling code o/ /o FLUSH MODIFIED OBJECTS BACK TO PERSISTENT STORE o/ if (OCICacheFlush(env, err, svc, (dvoid *)0, ((OCIRef*)(*)())0, (OCIRef *)0) != OCI_SUCCESS) /o error handling code o/ /o commit transaction o/ END OF EXAMPLE 1 NOTES This file has been subsetted to contain only the routines that will be in the first release. MODIFIED whe 09/01/99 - 976457:check __cplusplus for C++ code smuralid 10/29/98 - add comments for OCIObjectMakeObjectRef mkrishna 08/19/98 - change OCIGetPkTypeRef to OCIObjectGetPrimaryKeyTypeR mkrishna 08/10/98 - add OCIObjectMakeObjectRef & OCIObjectGetPkTypeRef rkasamse 06/22/98 - add comments for OCIDurationBegin(End) pmitra 04/01/98 - OCIObjectLockNoWait added pmitra 11/05/97 - [573769] OCIObjectArrayPin pos parameter cannot be NU cxcheng 07/29/97 - fix compile for short names skrishna 07/14/97 - add OCIObjectGetProperty skrishna 04/30/97 - OCIObjectFlushRefresh: remove duplicate declaration skrishna 04/24/97 - flag unsupported functions sthakur 03/20/97 - modify flag argument to OCIObjectFree skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types cxcheng 02/19/97 - remove short names support cxcheng 02/06/97 - take out short name support except with SLSHORTNAME sthakur 12/20/96 - fix a typepo in OCIOBjectArrayPin jboonleu 11/07/96 - modify comments cxcheng 10/28/96 - more beautification changes jboonleu 10/24/96 - add flag to OCIObjectFree jboonleu 10/22/96 - change interface of OCICacheFlush cxcheng 10/18/96 - rename OCIObjectPinArray to OCIObjectArrayPin cxcheng 10/14/96 - more renaming of types jboonleu 10/09/96 - add new interfaces cxcheng 10/09/96 - more lint fixes cxcheng 10/08/96 - more lint fixes jboonleu 09/27/96 - fix lint errors jboonleu 10/07/96 - beautify ori.h after conversion to long names cxcheng 10/04/96 - replace short names with long names sthakur 08/20/96 - add COR context to OCIObjectPin mluong 07/17/96 - add back orioglk, oriogdr, oriogiv, and oriocur. jboonleu 07/17/96 - rename refresh option to conherency option jboonleu 07/16/96 - change comment for cache consistency jwijaya 07/03/96 - add ANSI prototypes jboonleu 06/12/96 - update comment jboonleu 05/08/96 - change description of OCIDurationGetParent jboonleu 05/01/96 - add OROOCOSFN skrishna 04/08/96 - change ori*() to take OCIEnv* and OCIError* instead of oroenv* jboonleu 01/04/96 - interface change jboonleu 10/24/95 - support of variable ref jboonleu 02/15/95 - new interface sthakur 01/05/95 - pass username to origrgc skotsovo 12/07/94 - update example jwijaya 11/15/94 - rename ORONSPTAB to ORONSPEXT jwijaya 10/06/94 - add namespace to oriopnm() jwijaya 10/02/94 - connection handle -> connection number jboonleu 08/16/94 - fix lint errors jboonleu 07/20/94 - change interface of OCICacheFlush tanguyen 07/18/94 - add oriocpe, change OCIObjectCopy to oriocps tcheng 07/15/94 - add init param maximum_sga_heap_size tcheng 07/13/94 - change origini to get param string jboonleu 07/05/94 - change sccs string from sccid to a comment jboonleu 07/01/94 - Add examples to ORIO* and ORIC* functions tanguyen 06/30/94 - Fix the ORI_ORACLE ifdef skotsovo 06/27/94 - include all public functions in public functions list at top of header file tcheng 06/27/94 - modify comments according to new template tanguyen 06/24/94 - fix comments for OCIObjectCopy tcheng 06/24/94 - fix comments in origrgc() tanguyen 06/21/94 - fix comments and format tcheng 06/20/94 - commenting origini/trm/err/rgc/urg() functions tanguyen 06/16/94 - fix descriptions of ref operations tanguyen 06/16/94 - clarifies refs comparison tanguyen 05/12/94 - adds more interfaces (OCIObjectMarkUpdate) jwijaya 05/10/94 - fix examples, add origurg, change origcon to origrgc tanguyen 05/03/94 - remove unnecessary 'type' argument from 'OCIObjectCopy' tanguyen 03/08/94 - clarifies comments jwijaya 02/16/94 - more questions jwijaya 02/11/94 - more comments jwijaya 02/10/94 - identify optional arguments 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 ORT_ORACLE#include <ort.h>#endif#ifndef ORI_ORACLE#define ORI_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 OCIDurationBegin origbgu#define OCIDurationEnd origedu#define OCIDurationGetParent origpdr#define OCICacheFlushRefresh oricfrh#define OCICacheUnpin oricunp#define OCICacheFree oricfre#define OCICacheUnmark oricumk#define OCICacheGetObjects oricgpr#define OCICacheRegister oricscb#define OCIObjectUnpin oriounp#define OCIObjectPinCountReset orioupz#define OCIObjectLock oriolck#define OCIObjectLockNoWait oriolnw#define OCIObjectMarkUpdate orioupd#define OCIObjectUnmark orioumk#define OCIObjectUnmarkByRef orioumr#define OCIObjectAlwaysLatest oriomkl#define OCIObjectNotAlwaysLatest oriouml#define OCIObjectMarkDeleteByRef oriordl#define OCIObjectMarkDelete oriopdl#define OCIObjectFlush oriofls#define OCIObjectFlushRefresh oriofrh#define OCIObjectCopy oriocpy#define OCIObjectGetTypeRef oriogtr#define OCIObjectGetObjectRef oriogor#define OCIObjectGetInd oriogns#define OCIObjectExists oriogex#define OCIObjectGetProperty oriogpr#define OCIObjectRefresh oriorfs#define OCIObjectPinTable oriogtb#define OCIObjectGetPrimaryKeyTypeRef oriogpf#define OCIObjectMakeObjectRef oriomrf#define OCIObjectNew orionew#define OCIObjectPin oriopin#define OCIObjectFree oriofre#define OCIObjectArrayPin orioapn#define OCIObjectIsDirty oriodrt#define OCIObjectIsDirtied oriodrd#define OCIObjectIsLoaded orioldd#define OCICacheFlush oricfls#define OCICacheRefresh oricrfs#endif /* SLSHORTNAME */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -