Annotation of win32/sql/oracle/include/oci/ocidef.h, revision 1.1
1.1 ! parser 1: /*
! 2: * $Header: /var/lib/cvsroot/parser3/parser3/src/sql/oracle/oracle32/include/oci/ocidef.h,v 1.1 2001/08/22 14:02:19 parser Exp $ ocidef.h
! 3: */
! 4:
! 5: /* copyright (c) 1981 by Relational Software Incorporated */
! 6: /* copyright (c) 1984 by the Oracle Corporation */
! 7:
! 8: /*
! 9: NAME
! 10: ocidef
! 11: CONTENTS
! 12: Oracle Call Interface cursor area and LDA definitions
! 13: NOTES
! 14: none
! 15: OWNER
! 16: Oates
! 17: DATE
! 18: 09/07/82
! 19: MODIFIED
! 20: whe 09/01/99 - 976457:check __cplusplus for C++ code
! 21: skmishra 04/23/97 - Provide C++ compatibility
! 22: lchidamb 06/26/96 - put upidef.h, riddef.h within #ifndef
! 23: slari 06/12/96 - add ocigft_getFcnType
! 24: dchatter 11/10/95 - ocignfd - oci get native file descriptor
! 25: slari 05/11/95 - change OCIEVDEF and OCIEVTSF to UPIEVDEF and UPIEVTSF
! 26: dchatter 04/06/95 - add ifdef flags around OCI_flags
! 27: lchidamb 04/06/95 - drop maxdsz from ocibndps/ocidfnps
! 28: slari 04/07/95 - rename opinit to ocipin
! 29: slari 03/13/95 - thread safety changes
! 30: dchatter 03/08/95 - piece definitions OCI_*_PIECE
! 31: lchidamb 12/06/94 - add support for binding/defining with skips
! 32: dchatter 03/06/95 - merge changes from branch 1.12.720.1
! 33: dchatter 02/06/95 - add defines for login mode parameters
! 34: dchatter 07/06/94 - Deleting CRSCHK, with refcursor, no way to set this
! 35: dchatter 06/13/94 - add a new LDA flag LDANBL
! 36: rkooi 11/18/92 - update ocidpr interface
! 37: mmoore 10/31/92 - add ocidpr
! 38: gpongrac 11/17/92 - fix oexfet prototype
! 39: sjain 01/03/92 - Add ocibra
! 40: rjenkins 11/04/91 - adding prototypes for oparse and oexfet
! 41: sjain 04/15/91 - Change ocistf proto
! 42: sjain 04/01/91 - Rearrange oty codes. Add new ones
! 43: Jain 12/03/90 - Add #define for new describe call
! 44: Jain 11/29/90 - Add new function code for the new oci calls
! 45: Mendels 01/20/89 - fix 19170: make ocitbl CONST_DATA
! 46: Kabcene 01/27/88 - change interfaces to match V5
! 47: Navab 12/09/87 - add a parameter to ocierr call
! 48: Navab 11/30/87 - add ocierr, rename ocioer
! 49: Navab 10/08/87 - add prototypes for procedure declarations
! 50: Howard 09/07/87 - endif blah
! 51: Howard 05/11/87 - Add OTY types
! 52: Howard 04/27/87 - move ocldef defines here
! 53: Oates 10/15/85 - Add OCANCEL
! 54: Oates 09/30/85 - Implement ORA*Net
! 55: Oates 06/27/85 - Make datatype compatible with upidef.h
! 56: Andy 05/07/85 - delete CSRFBPIC
! 57: */
! 58:
! 59: #ifndef UPIDEF
! 60: #include <upidef.h>
! 61: #endif
! 62:
! 63: #ifndef RIDDEF
! 64: #include <riddef.h>
! 65: #endif
! 66:
! 67: #ifndef OCIDEF
! 68: #define OCIDEF
! 69:
! 70:
! 71: #define CSRCHECK 172 /* csrdef is a cursor */
! 72: #define LDACHECK 202 /* csrdef is a login data area */
! 73: struct csrdef
! 74: {
! 75: b2 csrrc; /* return code: v2 codes, v4 codes negative */
! 76: ub2 csrft; /* function type */
! 77: ub4 csrrpc; /* rows processed count */
! 78: ub2 csrpeo; /* parse error offset */
! 79: ub1 csrfc; /* function code */
! 80: ub1 csrlfl; /* lda flag to indicate type of login */
! 81: ub2 csrarc; /* actual untranslated return code */
! 82: ub1 csrwrn; /* warning flags */
! 83: ub1 csrflg; /* error action */
! 84: word csrcn; /* cursor number */
! 85: riddef csrrid; /* rowid structure */
! 86: word csrose; /* os dependent error code */
! 87: ub1 csrchk; /* check byte = CSRCHECK - in cursor */
! 88: /* check byte = LDACHECK - in LDA */
! 89: struct hstdef *csrhst; /* pointer to the hst */
! 90: };
! 91: typedef struct csrdef csrdef;
! 92: typedef struct csrdef ldadef; /* lda is the same as a csr */
! 93:
! 94:
! 95: /* values for csrlfl */
! 96: #define LDAFLG 1 /* ...via ologon */
! 97: #define LDAFLO 2 /* ...via olon or orlon */
! 98: #define LDANBL 3 /* ...nb logon in progress */
! 99:
! 100: /* valuses for crsfc */
! 101: #define csrfpa 2 /* ...OSQL */
! 102: #define csrfex 4 /* ...OEXEC */
! 103: #define csrfbi 6 /* ...OBIND */
! 104: #define csrfdb 8 /* ...ODFINN */
! 105: #define csrfdi 10 /* ...ODSRBN */
! 106: #define csrffe 12 /* ...OFETCH */
! 107: #define csrfop 14 /* ...OOPEN */
! 108: #define csrfcl 16 /* ...OCLOSE */
! 109: #define csrfds 22 /* ...ODSC */
! 110: #define csrfnm 24 /* ...ONAME */
! 111: #define csrfp3 26 /* ...OSQL3 */
! 112: #define csrfbr 28 /* ...OBNDRV */
! 113: #define csrfbx 30 /* ...OBNDRN */
! 114: /*#defe csrfdf 32*/ /* ???? */
! 115: #define csrfso 34 /* ...OOPT */
! 116: #define csrfre 36 /* ...ORESUM */
! 117: #define csrfbn 50 /* ...OBINDN */
! 118: #define csrfca 52 /* ..OCANCEL */
! 119: #define csrfsd 54 /* ..OSQLD */
! 120: #define csrfef 56 /* ..OEXFEN */
! 121: #define csrfln 58 /* ..OFLNG */
! 122: #define csrfdp 60 /* ..ODSCSP */
! 123: #define csrfba 62 /* ..OBNDRA */
! 124: #define csrfbps 63 /*..OBINDPS */
! 125: #define csrfdps 64 /*..ODEFINPS */
! 126: #define csrfgpi 65 /* ...OGETPI */
! 127: #define csrfspi 66 /* ...OSETPI */
! 128:
! 129: /* values for csrwrn */
! 130: #define CSRWANY 0x01 /* there is a warning flag set */
! 131: #define CSRWTRUN 0x02 /* a data item was truncated */
! 132: #define CSRWNVIC 0x04 /* NULL values were used in an aggregate function */
! 133: #define CSRWITCE 0x08 /* column count not equal to into list count */
! 134: #define CSRWUDNW 0x10 /* update or delete without where clause */
! 135: #define CSRWRSV0 0x20
! 136: #define CSRWROLL 0x40 /* rollback required */
! 137: #define CSRWRCHG 0x80 /* change after query start on select for update */
! 138:
! 139: /* values fro csrflg */
! 140: #define CSRFSPND 0x01 /* current operation suspended */
! 141: #define CSRFATAL 0x02 /* fatal operation: transaction rolled back */
! 142: #define CSRFBROW 0x04 /* current row backed out */
! 143: #define CSRFREFC 0x08 /* ref cursor type CRSCHK disabled for this cursor */
! 144: #define CSRFNOAR 0x10 /* ref cursor type binds, so no array bind/execute */
! 145:
! 146: /* define function codes; in order of octdef.h */
! 147: #define OTYCTB 1 /* CREATE TABLE */
! 148: #define OTYSER 2 /* set role */
! 149: #define OTYINS 3 /* INSERT */
! 150: #define OTYSEL 4 /* SELECT */
! 151: #define OTYUPD 5 /* UPDATE */
! 152: #define OTYDRO 6 /* drop role */
! 153: #define OTYDVW 7 /* DROP VIEW */
! 154: /* once was validate index */
! 155: /* once was create partition */
! 156: /* once was alter partition */
! 157: #define OTYDTB 8 /* DROP TABLE */
! 158: /* once was alter space */
! 159: /* once was drop space */
! 160: #define OTYDEL 9 /* DELETE */
! 161: #define OTYCVW 10 /* create view */
! 162: #define OTYDUS 11 /* drop user */
! 163: #define OTYCRO 12 /* create role */
! 164: #define OTYCSQ 13 /* create sequence */
! 165: #define OTYASQ 14 /* alter sequence */
! 166: #define OTYDSQ 16 /* drop sequence */
! 167: #define OTYCSC 17 /* create schema */
! 168: #define OTYCCL 18 /* CREATE CLUSTER */
! 169: /* once was alter cluster */
! 170: #define OTYCUS 19 /* create user */
! 171: #define OTYCIX 20 /* CREATE INDEX */
! 172: #define OTYDIX 21 /* DROP INDEX */
! 173: #define OTYDCL 22 /* DROP CLUSTER */
! 174: #define OTYVIX 23 /* validate index */
! 175: #define OTYCPR 24 /* create procedure */
! 176: #define OTYAPR 25 /* alter procedure */
! 177: #define OTYATB 26 /* alter table */
! 178: /* once was evaluate */
! 179: #define OTYXPL 27 /* explain */
! 180: #define OTYGRA 28 /* grant */
! 181: #define OTYREV 29 /* revoke */
! 182: #define OTYCSY 30 /* create synonym */
! 183: #define OTYDSY 31 /* drop synonym */
! 184: #define OTYASY 32 /* alter system switch log */
! 185: #define OTYSET 33 /* set transaction */
! 186: #define OTYPLS 34 /* pl/sql execute */
! 187: #define OTYLTB 35 /* lock */
! 188: #define OTYNOP 36 /* noop */
! 189: #define OTYRNM 37 /* rename */
! 190: #define OTYCMT 38 /* comment */
! 191: #define OTYAUD 39 /* audit */
! 192: #define OTYNOA 40 /* no audit */
! 193: #define OTYAIX 41 /* ALTER INDEX */
! 194: #define OTYCED 42 /* create external database */
! 195: #define OTYDED 43 /* drop external database */
! 196: #define OTYCDB 44 /* create database */
! 197: #define OTYADB 45 /* alter database */
! 198: #define OTYCRS 46 /* create rollback segment */
! 199: #define OTYARS 47 /* alter rollback segment */
! 200: #define OTYDRS 48 /* drop rollback segment */
! 201: #define OTYCTS 49 /* create tablespace */
! 202: #define OTYATS 50 /* alter tablespace */
! 203: #define OTYDTS 51 /* drop tablespace */
! 204: #define OTYASE 52 /* alter session */
! 205: #define OTYAUR 53 /* alter user */
! 206: #define OTYCWK 54 /* commit (work) */
! 207: #define OTYROL 55 /* rollback */
! 208: #define OTYSPT 56 /* savepoint */
! 209:
! 210: /* For number greater than 56 the the type is the same as defined in
! 211: ** octdef.h for that number. So for completion look at octdef.h
! 212: */
! 213:
! 214: #define OTYDEV OTYCVW /* old DEFINE VIEW = create view */
! 215:
! 216: /* Retired OTY types; try to reserve their values for a while */
! 217: #ifdef NEVER /* unused */
! 218: # define OTYCLN 2 /* CREATE LINK */
! 219: # define OTYDLN 6 /* DROP LINK */
! 220: # define OTYEXP 11 /* EXPAND */
! 221: /* 12 through 17 are also unused */
! 222: # define OTYACL 19 /* ALTER CLUSTER */
! 223: # define OTYCSP 23 /* CREATE SPACE */
! 224: # define OTYASP 24 /* alter space */
! 225: # define OTYDSP 25 /* drop space */
! 226: # define OTYEVA 27 /* evaluate */
! 227: # define OTYVIN 32 /* validate index */
! 228: # define OTYCPA 33 /* create partition */
! 229: # define OTYAPA 34 /* alter partition */
! 230: #endif /*NEVER *//* end of unused */
! 231:
! 232: /* FUNCTION CODES */
! 233: #define OCLFPA 2 /* parse - OSQL */
! 234: #define OCLFEX 4 /* execute - OEXEC */
! 235: #define OCLFBI 6 /* BIND by name - OBIND */
! 236: #define OCLFDB 8 /* define buffer - ODEFIN */
! 237: #define OCLFDI 10 /* describe item - ODSC */
! 238: #define OCLFFE 12 /* fetch - OFETCH */
! 239: #define OCLFOC 14 /* open cursor - OOPEN */
! 240: # define OCLFLI OCLFOC /* old name for open cursor - OOPEN */
! 241: #define OCLFCC 16 /* close cursor - OCLOSE */
! 242: # define OCLFLO OCLFCC /* old name for close cursor - OCLOSE */
! 243: #define OCLFDS 22 /* describe - ODSC */
! 244: #define OCLFON 24 /* get table and column names - ONAME */
! 245: #define OCLFP3 26 /* parse - OSQL3 */
! 246: #define OCLFBR 28 /* bind reference by name - OBNDRV */
! 247: #define OCLFBX 30 /* bind referecne numeric - OBNDRN */
! 248: #define OCLFSO 34 /* special function - OOPT */
! 249: #define OCLFRE 36 /* resume - ORESUM */
! 250: #define OCLFBN 50 /* bindn */
! 251: #define OCLFMX 52 /* maximum function number */
! 252:
! 253: #ifdef NEVER /* unused codes */
! 254: # define OCLFLK 18 /* open for kernel operations */
! 255: # define OCLFEK 20 /* execute kernel operations */
! 256: # define OCLFOK 22 /* kernel close */
! 257: # define OCLFIN 28 /* logon to oracle */
! 258: # define OCLFOF 30 /* logoff from oracle */
! 259: # define OCLFAX 32 /* allocate a context area */
! 260: # define OCLFPI 34 /* page in context area */
! 261: # define OCLFIS 36 /* special system logon */
! 262: # define OCLFCO 38 /* cancel the current operation */
! 263: # define OCLFGI 40 /* get database id */
! 264: # define OCLFJN 42 /* journal operation */
! 265: # define OCLFCL 44 /* cleanup prior execute operation */
! 266: # define OCLFMC 46 /* map a cursor area */
! 267: # define OCLFUC 48 /* unmap cursor and restore user maping */
! 268: #endif /*NEVER *//* obsolete codes */
! 269:
! 270:
! 271: /* values for ocimode in ocipin call */
! 272:
! 273: #define OCIEVDEF UPIEVDEF /* default : non-thread safe enivronment */
! 274: #define OCIEVTSF UPIEVTSF /* thread-safe environment */
! 275:
! 276:
! 277: /* OCIL* flags used to determine the mode of login, using ocilog().
! 278: ** Currently defined only for non-blocking and thread-safe logins.
! 279: */
! 280:
! 281: #define OCILMDEF UPILMDEF /* default, regular login */
! 282: #define OCILMNBL UPILMNBL /* non-blocking logon */
! 283: #define OCILMESY UPILMESY /* thread safe but external sync */
! 284: #define OCILMISY UPILMISY /* internal sync, we do it */
! 285: #define OCILMTRY UPILMTRY /* try to, but do not block on mutex */
! 286:
! 287:
! 288: /*
! 289: * since sqllib uses both ocidef and ocidfn the following defines
! 290: * need to be guarded
! 291: */
! 292: #ifndef OCI_FLAGS
! 293: #define OCI_FLAGS
! 294:
! 295: /* OCI_*_PIECE defines the piece types that are returned or set
! 296: */
! 297:
! 298: #define OCI_ONE_PIECE UPI_ONE_PIECE /* there or this is the only piece */
! 299: #define OCI_FIRST_PIECE UPI_FIRST_PIECE /* the first of many pieces */
! 300: #define OCI_NEXT_PIECE UPI_NEXT_PIECE /* the next of many pieces */
! 301: #define OCI_LAST_PIECE UPI_LAST_PIECE /* the last piece of this column */
! 302: #endif
! 303:
! 304: /*
! 305: ** OCITAB: define return code pairs for version 2 to 3 conversions
! 306: */
! 307: struct ocitab
! 308: {
! 309: b2 ocitv3; /* Version 3/4 return code */
! 310: b2 ocitv2; /* Version 2 equivalent return code */
! 311: };
! 312: typedef struct ocitab ocitab;
! 313:
! 314: externref CONST_DATA ocitab ocitbl[];
! 315:
! 316: /* macros to check cursors and LDA's. */
! 317: /* macros to set error codes */
! 318:
! 319: # define CRSCHK(c) if ((c->csrchk != CSRCHECK)\
! 320: && !bit(c->csrflg, CSRFREFC))\
! 321: return(ocir32(c, OER(1001)))
! 322: # define ldaerr(l, e) ( l->csrrc = (b2)(-( l->csrarc = (ub2)(e)) ) )
! 323: # define LDACHK(l) if (l->csrchk != LDACHECK) \
! 324: return(ldaerr(l, OER(1001)))
! 325:
! 326:
! 327: /************************************************/
! 328: /* OCI PROCEDURE DECLARATIONS */
! 329: /************************************************/
! 330:
! 331:
! 332:
! 333:
! 334: /*****************************/
! 335: /* Database logon/logout */
! 336: /*****************************/
! 337: sword ocilog( /*_ ldadef *lda, struct hstdef *hst, text *uid, sword uidl,
! 338: text *psw, sword pswl, text* conn, sword connl,
! 339: ub4 mode _*/);
! 340: sword ocilon( /*_ ldadef *lda, text *uid, word uidl, text *psw, word pswl,
! 341: word audit _*/);
! 342: sword ocilgi( /*_ ldadef *lda, b2 areacount _*/ );
! 343: sword ocirlo( /*_ ldadef *lda, struct hstdef *hst, text *uid, word uidl,
! 344: text *psw, word pswl, word audit _*/ );
! 345: /* ocilon - logon to oracle
! 346: ** ocilgi - version 2 compatible ORACLE logon call.
! 347: ** no login to ORACLE is performed: the LDA is initialized
! 348: ** ocirlo - version 5 compatible ORACLE Remote Login call,
! 349: ** oracle login is executed.
! 350: ** lda - pointer to ldadef
! 351: ** uid - user id [USER[/PASSWORD]]
! 352: ** uidl - length of uid, if -1 strlen(uid) is used
! 353: ** psw - password string; ignored if specified in uid
! 354: ** pswl - length of psw, if -1 strlen(psw) is used
! 355: ** audit - is not supported; the only permissible value is 0
! 356: ** areacount - unused
! 357: */
! 358:
! 359: sword ocilof( /*_ ldadef *lda _*/ );
! 360: /*
! 361: ** ocilof - disconnect from ORACLE
! 362: ** lda - pointer to ldadef
! 363: */
! 364:
! 365:
! 366: /*********************/
! 367: /* Error Messages */
! 368: /*********************/
! 369: sword ocierr( /*_ ldadef *lda, b2 rcode, text *buffer, word bufl _*/ );
! 370: sword ocidhe( /*_ b2 rcode, text *buffer _*/ );
! 371: /*
! 372: ** Move the text explanation for an ORACLE error to a user defined buffer
! 373: ** ocierr - will return the message associated with the hstdef stored
! 374: ** in the lda.
! 375: ** ocidhe - will return the message associated with the default host.
! 376: ** lda - lda associated with the login session
! 377: ** rcode - error code as returned by V3 call interface
! 378: ** buffer - address of a user buffer of at least 132 characters
! 379: */
! 380:
! 381:
! 382: /***********************/
! 383: /* Cursor Open/Close */
! 384: /***********************/
! 385: sword ociope( /*_ struct csrdef *cursor, ldadef *lda, text *dbn, word dbnl,
! 386: word areasize, text *uid, word uidl _*/ );
! 387:
! 388: sword ociclo( /*_ struct csrdef *cursor _*/ );
! 389: /*
! 390: ** open or close a cursor.
! 391: ** cursor - pointer to csrdef
! 392: ** ldadef - pointer to ldadef
! 393: ** dbn - unused
! 394: ** dbnl - unused
! 395: ** areasize - if (areasize == -1) areasize <- system default initial size
! 396: ** else if (areasize IN [1..256]) areasize <- areasize * 1024;
! 397: ** most applications should use the default size since context
! 398: ** areas are extended as needed until memory is exhausted.
! 399: ** uid - user id
! 400: ** uidl - userid length
! 401: */
! 402:
! 403: /***********************************/
! 404: /* CONTROL AND OPTIONS */
! 405: /***********************************/
! 406: sword ocibre( /*_ ldadef *lda _*/ );
! 407: /*
! 408: ** ocibrk - Oracle Call Interface send BReaK Sends a break to
! 409: ** oracle. If oracle is active, the current operation is
! 410: ** cancelled. May be called asynchronously. DOES NOT SET
! 411: ** OERRCD in the hst. This is because ocibrk may be called
! 412: ** asynchronously. Callers must test the return code.
! 413: ** lda - pointer to a ldadef
! 414: */
! 415:
! 416: sword ocican( /*_ struct csrdef *cursor _*/ );
! 417: /*
! 418: ** cancel the operation on the cursor, no additional OFETCH calls
! 419: ** will be issued for the existing cursor without an intervening
! 420: ** OEXEC call.
! 421: ** cursor - pointer to csrdef
! 422: */
! 423:
! 424: sword ocisfe( /*_ struct csrdef *cursor, word erropt, word waitopt _*/ );
! 425: /*
! 426: ** ocisfe - user interface set error options
! 427: ** set the error and cursor options.
! 428: ** allows user to set the options for dealing with fatal dml errors
! 429: ** and other cursor related options
! 430: ** see oerdef for valid settings
! 431: ** cursor - pointer to csrdef
! 432: ** erropt - error optionsn
! 433: ** waitopr - wait options
! 434: */
! 435:
! 436:
! 437: /***************************************/
! 438: /* COMMIT/ROLLBACK/AUTOCOMMIT */
! 439: /***************************************/
! 440: sword ocicom( /*_ ldadef *lda _*/ );
! 441: sword ocirol( /*_ ldadef *lda _*/ );
! 442: /*
! 443: ** ocicom - commit the current transaction
! 444: ** ocirol - roll back the current transaction
! 445: */
! 446:
! 447: sword ocicon( /*_ ldadef *lda _*/ );
! 448: sword ocicof( /*_ ldadef *lda _*/ );
! 449: /*
! 450: ** ocicon - auto Commit ON
! 451: ** ocicof - auto Commit OFf
! 452: */
! 453:
! 454:
! 455:
! 456: /************************/
! 457: /* parsing */
! 458: /************************/
! 459: sword ocisq3( /*_ struct csrdef *cursor, text *sqlstm, word sqllen _*/ );
! 460: /*
! 461: ** ocisq3 - user interface parse sql statement
! 462: ** cursor - pointer to csrdef
! 463: ** sqlstm - pointer to SQL statement
! 464: ** sqllen - length of SQL statement. if -1, strlen(sqlstm) is used
! 465: */
! 466:
! 467:
! 468:
! 469: /***************************/
! 470: /* BINDING */
! 471: /***************************/
! 472: /* these are for the opcode in ocibndps, ocidfnps */
! 473: #define OCI_PCWS 0
! 474: #define OCI_SKIP 1
! 475:
! 476: sword ocibin( /*_ struct csrdef *cursor, text *sqlvar, word sqlvl, ub1 *progv,
! 477: word progvl, word ftype, word scale, text *fmt, word fmtl,
! 478: word fmtt _*/ );
! 479: sword ocibrv( /*_ struct csrdef *cursor, text *sqlvar, word sqlvl, ub1 *progv,
! 480: word progvl, word ftype, word scale, b2 *indp, text *fmt,
! 481: word fmtl, word fmtt _*/ );
! 482: sword ocibra( /*_ struct csrdef *cursor, text *sqlvar, word sqlvl, ub1 *progv,
! 483: word progvl, word ftype, word scale, b2 *indp, ub2 *aln,
! 484: ub2 *rcp, ub4 mal, ub4 *cal, text *fmt,
! 485: word fmtl, word fmtt _*/ );
! 486: sword ocibndps( /*_ struct csrdef *cursor, ub1 opcode, text *sqlvar, sb4 sqlvl,
! 487: ub1 *progv, sb4 progvl, word ftype, word scale, b2 *indp,
! 488: ub2 *aln, ub2 *rcp,
! 489: sb4 pv_skip, sb4 ind_skip, sb4 len_skip, sb4 rc_skip,
! 490: ub4 mal, ub4 *cal, text *fmt, sb4 fmtl, word fmtt _*/ );
! 491: sword ocibnn ( /*_ struct csrdef *cursor, ub2 sqlvn, ub1 *progv, word progvl,
! 492: word ftype, word scale, text *fmt, word fmtl, word fmtt _*/ );
! 493: sword ocibrn( /*_ struct csrdef *cursor, word sqlvn, ub1 *progv, word progvl,
! 494: word ftype, word scale, b2 *indp, text *fmt, word fmtl,
! 495: word fmtt _*/ );
! 496: /*
! 497: ** ocibin - bind by value by name
! 498: ** ocibrv - bind by reference by name
! 499: ** ocibra - bind by reference by name (array)
! 500: ** ocibndps - bind by reference by name (array) piecewise or with skips
! 501: ** ocibnn - bind by value numeric
! 502: ** ocibrn - bind by reference numeric
! 503: **
! 504: ** the contents of storage specified in bind-by-value calls are
! 505: ** evaluated immediately.
! 506: ** the addresses of storage specified in bind-by-reference calls are
! 507: ** remembered, and the contents are examined at every execute.
! 508: **
! 509: ** cursor - pointer to csrdef
! 510: ** sqlvn - the number represented by the name of the bind variables
! 511: ** for variables of the form :n or &n for n in [1..256)
! 512: ** (i.e. &1, :234). unnecessarily using larger numbers
! 513: ** in the range wastes space.
! 514: ** sqlvar - the name of the bind variable (:name or &name)
! 515: ** sqlval - the length of the name;
! 516: ** in bindif -1, strlen(bvname) is used
! 517: ** progv - pointer to the object to bind.
! 518: ** progvl - length of object to bind.
! 519: ** in bind-by-value if specified as -1 then strlen(bfa) is
! 520: ** used (really only makes sends with character types)
! 521: ** in bind-by-value, if specified as -1 then UB2MAXVAL
! 522: ** is used. Again this really makes sense only with
! 523: ** SQLT_STR.
! 524: ** ftype - datatype of object
! 525: ** indp - pointer to indicator variable.
! 526: ** -1 means to ignore bfa/bfl and bind NULL;
! 527: ** not -1 means to bind the contents of bfa/bfl
! 528: ** bind the contents pointed to by bfa
! 529: ** aln - Alternate length pointer
! 530: ** rcp - Return code pointer
! 531: ** mal - Maximum array length
! 532: ** cal - Current array length pointer
! 533: ** fmt - format string
! 534: ** fmtl - length of format string; if -1, strlen(fmt) is used
! 535: ** fmtt - desired output type after applying forat mask. Not
! 536: ** really yet implemented
! 537: ** scale - number of decimal digits in a cobol packed decimal (type 7)
! 538: **
! 539: ** Note that the length of bfa when bound as SQLT_STR is reduced
! 540: ** to strlen(bfa).
! 541: ** Note that trailing blanks are stripped of storage of SQLT_STR.
! 542: */
! 543:
! 544: /***************************/
! 545: /* DESCRIBING */
! 546: /***************************/
! 547: sword ocidsc ( /*_ struct csrdef *cursor, word pos, b2 *dbsize, b2 *fsize,
! 548: b2 *rcode, b2 *dtype, b1 *buf, b2 *bufl, b2 *dsize _*/ );
! 549: sword ocidsr( /*_ struct csrdef *cursor, word pos, b2 *dbsize, b2 *dtype,
! 550: b2 *fsize _*/ );
! 551: sword ocinam( /*_ struct csrdef *cursor, word pos, b1 *tbuf, b2 *tbufl,
! 552: b1 *buf, b2 *bufl _*/);
! 553: /*
! 554: ** ocidsc, ocidsr: Obtain information about a column
! 555: ** ocinam : get the name of a column
! 556: ** cursor - pointer to csrdef
! 557: ** pos - position in select list from [1..N]
! 558: ** dbsize - place to store the database size
! 559: ** fsize - place to store the fetched size
! 560: ** rcode - place to store the fetched column returned code
! 561: ** dtype - place to store the data type
! 562: ** buf - array to store the column name
! 563: ** bufl - place to store the column name length
! 564: ** dsize - maximum display size
! 565: ** tbuf - place to store the table name
! 566: ** tbufl - place to store the table name length
! 567: */
! 568:
! 569: sword ocidsp ( /*_ struct csrdef *cursor, word pos, b4 *dbsize, b2 *dbtype,
! 570: b1 *cbuf, b4 *cbufl, b4 *dsize, sb2 *pre, sb2 *scl,
! 571: sb2 *nul _*/);
! 572:
! 573: sword ocidpr(/*_ ldadef *lda, text *object_name, size_t object_length,
! 574: ptr_t reserved1, size_t reserved1_length, ptr_t reserved2,
! 575: size_t reserved2_length, ub2 *overload, ub2 *position,
! 576: ub2 *level, text **argument_name, ub2 *argument_length,
! 577: ub2 *datatype, ub1 *default_supplied, ub1 *in_out,
! 578: ub4 *length, sb2 *precision, sb2 *scale, ub1 *radix,
! 579: ub4 *spare, ub4 *total_elements _*/);
! 580: /*
! 581: ** OCIDPR - User Program Interface: Describe Stored Procedure
! 582: **
! 583: ** This routine is used to obtain information about the calling
! 584: ** arguments of a stored procedure. The client provides the
! 585: ** name of the procedure using "object_name" and "database_name"
! 586: ** (database name is optional). The client also supplies the
! 587: ** arrays for OCIDPR to return the values and indicates the
! 588: ** length of array via the "total_elements" parameter. Upon return
! 589: ** the number of elements used in the arrays is returned in the
! 590: ** "total_elements" parameter. If the array is too small then
! 591: ** an error will be returned and the contents of the return arrays
! 592: ** are invalid.
! 593: **
! 594: **
! 595: ** EXAMPLE :
! 596: **
! 597: ** Client provides -
! 598: **
! 599: ** object_name - SCOTT.ACCOUNT_UPDATE@BOSTON
! 600: ** total_elements - 100
! 601: **
! 602: **
! 603: ** ACCOUNT_UPDATE is an overloaded function with specification :
! 604: **
! 605: ** type number_table is table of number index by binary_integer;
! 606: ** table account (account_no number, person_id number,
! 607: ** balance number(7,2))
! 608: ** table person (person_id number(4), person_nm varchar2(10))
! 609: **
! 610: ** function ACCOUNT_UPDATE (account number,
! 611: ** person person%rowtype, amounts number_table,
! 612: ** trans_date date) return accounts.balance%type;
! 613: **
! 614: ** function ACCOUNT_UPDATE (account number,
! 615: ** person person%rowtype, amounts number_table,
! 616: ** trans_no number) return accounts.balance%type;
! 617: **
! 618: **
! 619: ** Values returned -
! 620: **
! 621: ** overload position argument level datatype length prec scale rad
! 622: ** -------------------------------------------------------------------
! 623: ** 0 0 0 NUMBER 22 7 2 10
! 624: ** 0 1 ACCOUNT 0 NUMBER 22 0 0 0
! 625: ** 0 2 PERSON 0 RECORD 0 0 0 0
! 626: ** 0 2 PERSON_ID 1 NUMBER 22 4 0 10
! 627: ** 0 2 PERSON_NM 1 VARCHAR2 10 0 0 0
! 628: ** 0 3 AMOUNTS 0 TABLE 0 0 0 0
! 629: ** 0 3 1 NUMBER 22 0 0 0
! 630: ** 0 4 TRANS_NO 0 NUMBER 22 0 0 0
! 631: **
! 632: ** 1 0 0 NUMBER 22 7 2 10
! 633: ** 1 1 ACCOUNT 0 NUMBER 22 0 0 0
! 634: ** 1 2 PERSON 0 RECORD 0 0 0 0
! 635: ** 1 2 PERSON_ID 1 NUMBER 22 4 0 10
! 636: ** 1 2 PERSON_NM 1 VARCHAR2 10 0 0 0
! 637: ** 1 3 AMOUNTS 0 TABLE 0 0 0 0
! 638: ** 1 3 1 NUMBER 22 0 0 0
! 639: ** 1 4 TRANS_DATE 0 NUMBER 22 0 0 0
! 640: **
! 641: **
! 642: ** OCIDPR Argument Descriptions -
! 643: **
! 644: ** ldadef - pointer to ldadef
! 645: ** object_name - object name, synonyms are also accepted and will
! 646: ** be translate, currently only procedure and function
! 647: ** names are accepted, also NLS names are accepted.
! 648: ** Currently, the accepted format of a name is
! 649: ** [[part1.]part2.]part3[@dblink] (required)
! 650: ** object_length - object name length (required)
! 651: ** reserved1 - reserved for future use
! 652: ** reserved1_length - reserved for future use
! 653: ** reserved2 - reserved for future use
! 654: ** reserved2_length - reserved for future use
! 655: ** overload - array indicating overloaded procedure # (returned)
! 656: ** position - array of argument positions, position 0 is a function
! 657: ** return argument (returned)
! 658: ** level - array of argument type levels, used to describe
! 659: ** sub-datatypes of data structures like records
! 660: ** and arrays (returned)
! 661: ** argument_name - array of argument names, only returns first
! 662: ** 30 characters of argument names, note storage
! 663: ** for 30 characters is allocated by client (returned)
! 664: ** argument_length - array of argument name lengths (returned)
! 665: ** datatype - array of oracle datatypes (returned)
! 666: ** default_supplied - array indicating parameter has default (returned)
! 667: ** 0 = no default, 1 = default supplied
! 668: ** in_out - array indicating if argument is IN or OUT (returned
! 669: ** 0 = IN param, 1 = OUT param, 2 = IN/OUT param
! 670: ** length - array of argument lengths (returned)
! 671: ** precision - array of precisions (if number type)(returned)
! 672: ** scale - array of scales (if number type)(returned)
! 673: ** radix - array of radix (if number type)(returned)
! 674: ** spare - array of spares.
! 675: ** total_elements - size of arrays supplied by client (required),
! 676: ** total number of elements filled (returned)
! 677: */
! 678:
! 679: /*************************************/
! 680: /* DEFINING */
! 681: /*************************************/
! 682: sword ocidfi( /*_ struct csrdef *cursor, word pos, ub1 *buf, word bufl,
! 683: word ftype, b2 *rc, word scale _*/ );
! 684: sword ocidfn( /*_ struct csrdef *cursor, word pos, ub1 *buf, word bufl,
! 685: word ftype, word scale, b2 *indp, text *fmt, word fmtl,
! 686: word fmtt, ub2 *rl, ub2 *rc _*/ );
! 687: sword ocidfnps( /*_ struct csrdef *cursor, ub1 opcode, word pos, ub1 *buf,
! 688: sb4 bufl, word ftype, word scale,
! 689: b2 *indp, text *fmt, sb4 fmtl,
! 690: word fmtt, ub2 *rl, ub2 *rc,
! 691: sb4 pv_skip, sb4 ind_skip, sb4 len_skip, sb4 rc_skip _*/ );
! 692:
! 693:
! 694: /* Define a user data buffer using upidfn
! 695: ** cursor - pointer to csrdef
! 696: ** pos - position of a field or exp in the select list of a query
! 697: ** bfa/bfl - address and length of client-supplied storage
! 698: to receive data
! 699: ** ftype - user datatype
! 700: ** scale - number of fractional digits for cobol packed decimals
! 701: ** indp - place to store the length of the returned value. If returned
! 702: ** value is:
! 703: ** negative, the field fetched was NULL
! 704: ** zero , the field fetched was same length or shorter than
! 705: ** the buffer provided
! 706: ** positive, the field fetched was truncated
! 707: ** fmt - format string
! 708: ** fmtl - length of format string, if -1 strlent(fmt) used
! 709: ** rl - place to store column length after each fetch
! 710: ** rc - place to store column error code after each fetch
! 711: ** fmtt - fomat type
! 712: */
! 713:
! 714: /********************************/
! 715: /* PIECE INFORMATION GET/SET */
! 716: /********************************/
! 717: sword ocigetpi( /*_ struct csrdef *cursor, ub1 *piecep,
! 718: dvoid **ctxpp, ub4 *iterp, ub4 *indexp _*/ );
! 719: sword ocisetpi( /*_ struct csrdef *cursor, ub1 piece,
! 720: dvoid *bufp, ub4 *lenp _*/ );
! 721:
! 722:
! 723: /********************************/
! 724: /* EXECUTE */
! 725: /********************************/
! 726: sword ociexe( /*_ struct csrdef *cursor _*/ );
! 727: sword ociexn( /*_ struct csrdef *cursor, word iters, word roff _*/ );
! 728: sword ociefn( /*_ struct csrdef *cursor, ub4 nrows, word can, word exact _*/);
! 729: /*
! 730: ** ociexe - execute a cursor
! 731: ** ociexn - execute a cursosr N times
! 732: ** cursor - pointer to a csrdef
! 733: ** iters - number of times to execute cursor
! 734: ** roff - offset within the bind variable array at which to begin
! 735: ** operations.
! 736: */
! 737:
! 738:
! 739: /*********************************/
! 740: /* FETCHING */
! 741: /*********************************/
! 742: sword ocifet( /*_ struct csrdef *cursor _*/ );
! 743: sword ocifen( /*_ struct csrdef *cursor, word nrows _*/ );
! 744: /* ocifet - fetch the next row
! 745: ** ocifen - fetch n rows
! 746: ** cursor - pointer to csrdef
! 747: ** nrows - number of rows to be fetched
! 748: */
! 749:
! 750: sword ocilng(/*_ struct csrdef *cursor, word posit, ub1 *bfa, sb4 bfl,
! 751: word dty, ub4 *rln, sb4 off _*/);
! 752:
! 753: /*********************************/
! 754: /* CONVERSION */
! 755: /*********************************/
! 756: sword ocic32( /*_ struct csrdef *cursor _*/ );
! 757: /*
! 758: ** Convert selected version 3 return codes to the equivalent
! 759: ** version 2 code.
! 760: ** csrdef->csrrc is set to the converted code
! 761: ** csrdef->csrft is set to v2 oracle statment type
! 762: ** csrdef->csrrpc is set to the rows processed count
! 763: ** csrdef->csrpeo is set to error postion
! 764: **
! 765: ** cursor - pointer to csrdef
! 766: */
! 767:
! 768:
! 769: sword ocir32( /*_ struct csrdef *cursor, word retcode _*/ );
! 770: /*
! 771: ** Convert selected version 3 return codes to the equivalent version 2 code.
! 772: **
! 773: ** cursor - pointer to csrdef
! 774: ** retcode - place to store the return code
! 775: */
! 776:
! 777:
! 778: VOID ociscn( /*_ word **arglst, char *mask_addr, word **newlst _*/ );
! 779: /*
! 780: ** Convert call-by-ref to call-by-value:
! 781: ** takes an arg list and a mask address, determines which args need
! 782: ** conversion to a value, and creates a new list begging at the address
! 783: ** of newlst.
! 784: **
! 785: ** arglst - list of arguments
! 786: ** mast_addr _ mask address determines args needing conversion
! 787: ** newlst - new list of args
! 788: */
! 789:
! 790: word ocistf ( /*_ word typ, word bufl, word rdig, text *fmt,
! 791: struct csrdef *cursor, sword *err _*/ );
! 792: /* Convert a packed decimal buffer length (bytes) and scale to a format
! 793: ** string of the form mm.+/-nn, where mm is the number of packed
! 794: ** decimal digits, and nn is the scaling factor. A positive scale name
! 795: ** nn digits to the rights of the decimal; a negative scale means nn zeros
! 796: ** should be supplied to the left of the decimal.
! 797: ** bufl - length of the packed decimal buffer
! 798: ** rdig - number of fractional digits
! 799: ** fmt - pointer to a string holding the conversion format
! 800: ** cursor - pointer to csrdef
! 801: ** err - pointer to word storing error code
! 802: */
! 803:
! 804:
! 805: /******************************************/
! 806: /* Non-blocking operations */
! 807: /******************************************/
! 808: sword ocinbs( /*_ ldadef *lda _*/ ); /* set a connection to non-blocking */
! 809: sword ocinbt( /*_ ldadef *lda _*/ ); /* test if connection is non-blocking */
! 810: sword ocinbc( /*_ ldadef *lda _*/ ); /* clear a connection to blocking */
! 811: sword ocinlo( /*_ ldadef *lda, struct hstdef *hst, text *conn,
! 812: sword connl, text *uid, sword uidl,
! 813: text *psw, sword pswl, sword audit _*/ );
! 814: /* logon in non-blocking fashion */
! 815: /* ocinlo allows an application to logon in non-blocking fashion.
! 816: ** lda - pointer to ldadef
! 817: ** hst - pointer to a 256 byte area, must be cleared to zero before call
! 818: ** conn - the database link (if specified @LINK in uid will be ignored)
! 819: ** connl - length of conn; if -1 strlen(conn) is used
! 820: ** uid - user id [USER[/PASSWORD][@LINK]]
! 821: ** uidl - length of uid, if -1 strlen(uid) is used
! 822: ** psw - password string; ignored if specified in uid
! 823: ** pswl - length of psw, if -1 strlen(psw) is used
! 824: ** audit - is not supported; the only permissible value is 0
! 825: */
! 826:
! 827: /***************************************************/
! 828: /* Procedure Declaration for Pro*C */
! 829: /***************************************************/
! 830: /* Note: The following routines are used in Pro*C and have the
! 831: same interface as their couterpart in OCI.
! 832: Althought the interface follows for more details please refer
! 833: to the above routines */
! 834:
! 835: /******************************************/
! 836: /* initialization/logon/logof */
! 837: /******************************************/
! 838: sword ocipin( /*_ ub4 mode _*/ );
! 839:
! 840: sword ologin( /*_ ldadef *lda, b2 areacount _*/ );
! 841: sword ologon( /*_ ldadef *lda, b2 areacount _*/ );
! 842: sword olon( /*_ ldadef *lda, text *uid, word uidl, text *psw, word pswl,
! 843: word audit _*/);
! 844: sword orlon( /*_ ldadef *lda, struct hstdef *hst, text *uid, word uidl,
! 845: text *psw, word pswl, word audit _*/ );
! 846: sword ologof( /*_ ldadef *lda _*/ );
! 847:
! 848: /*****************************************/
! 849: /* Open/Close/Parse Cursor */
! 850: /*****************************************/
! 851: sword oopen( /*_ struct csrdef *cursor, ldadef *lda, text *dbn, word dbnl,
! 852: word areasize, text *uid, word uidl _*/ );
! 853: sword oclose( /*_ struct csrdef *cursor _*/ );
! 854: sword osql3( /*_ struct csrdef *cursor, text *sqlstm, word sqllen _*/ );
! 855: sword oparse( /*_ struct csrdef *cursor, text *sqlstm, sb4 sqllen,
! 856: word defflg, ub4 sqlt _*/);
! 857:
! 858: /*
! 859: ** ocisqd - oci delayed parse (Should be used only with deferred upi/oci)
! 860: ** FUNCTION: Call upidpr to delay the parse of the sql statement till the
! 861: ** time that a call needs to be made to the kernel (execution or
! 862: ** describe time )
! 863: ** RETURNS: Oracle return code.
! 864: */
! 865: sword ocisq7(/*_ struct csrdef *cursor, text *sqlstm, sb4 sqllen,
! 866: word defflg, ub4 sqlt _*/);
! 867:
! 868: /*****************************************/
! 869: /* Commit/Rollback */
! 870: /*****************************************/
! 871: sword ocom( /*_ ldadef *lda _*/ );
! 872: sword ocon( /*_ ldadef *lda _*/ );
! 873: sword ocof( /*_ ldadef *lda _*/ );
! 874: sword orol( /*_ ldadef *lda _*/ );
! 875:
! 876:
! 877: /*****************************************/
! 878: /* Control/Options */
! 879: /*****************************************/
! 880: sword oopt( /*_ struct csrdef *cursor, word erropt, word waitopt _*/ );
! 881: sword ocan( /*_ struct csrdef *cursor _*/ );
! 882: sword obreak( /*_ ldadef *lda _*/ );
! 883:
! 884:
! 885: /*****************************************/
! 886: /* Bind */
! 887: /*****************************************/
! 888: sword obind( /*_ struct csrdef *cursor, text *sqlvar, word sqlvl, ub1 *progv,
! 889: word progvl, word ftype, word scale, text *fmt, word fmtl,
! 890: word fmtt _*/ );
! 891: sword obindn( /*_ struct csrdef *cursor, ub2 sqlvn, ub1 *progv, word progvl,
! 892: word ftype, word scale, text *fmt, word fmtl, word fmtt _*/ );
! 893: sword obndrn( /*_ struct csrdef *cursor, word sqlvn, ub1 *progv, word progvl,
! 894: word ftype, word scale, b2 *indp, text *fmt, word fmtl,
! 895: word fmtt _*/ );
! 896: sword obndrv( /*_ struct csrdef *cursor, text *sqlvar, word sqlvl, ub1 *progv,
! 897: word progvl, word ftype, word scale, b2 *indp, text *fmt,
! 898: word fmtl, word fmtt _*/ );
! 899:
! 900: /**********************************************/
! 901: /* Define */
! 902: /**********************************************/
! 903: sword odefin( /*_ struct csrdef *cursor, word pos, ub1 *buf, word bufl,
! 904: word ftype, word scale, b2 *indp, text *fmt, word fmtl,
! 905: word fmtt, ub2 *rl, ub2 *rc _*/ );
! 906: sword odfinn( /*_ struct csrdef *cursor, word pos, ub1 *buf, word bufl,
! 907: word ftype, b2 *rc, word scale _*/ );
! 908:
! 909: /**********************************************/
! 910: /* Describe */
! 911: /**********************************************/
! 912: sword odsc ( /*_ struct csrdef *cursor, word pos, b2 *dbsize, b2 *fsize,
! 913: b2 *rcode, b2 *dtype, b1 *buf, b2 *bufl, b2 *dsize _*/ );
! 914: sword odsrbn( /*_ struct csrdef *cursor, word pos, b2 *dbsize, b2 *dtype,
! 915: b2 *fsize _*/ );
! 916: sword oname( /*_ struct csrdef *cursor, word pos, b1 *tbuf, b2 *tbufl,
! 917: b1 *buf, b2 *bufl _*/);
! 918:
! 919: /***********************************************/
! 920: /* Error message */
! 921: /***********************************************/
! 922: #if !defined(__STDC__) && !defined(__cplusplus)
! 923: sword oermsg( /*_ b2 rcode, text *buffer _*/ );
! 924: sword oerhms( /*_ ldadef *lda, b2 rcode, text *buffer, word bufl _*/ );
! 925: #endif /* __STDC__ */
! 926:
! 927: /***********************************************/
! 928: /* Execute */
! 929: /***********************************************/
! 930: sword oexec( /*_ struct csrdef *cursor _*/ );
! 931: sword oexn( /*_ struct csrdef *cursor, word iters, word roff _*/ );
! 932: sword oexfet( /*_ struct csrdef *cursor, ub4 nrows, word can, word exact _*/ );
! 933:
! 934:
! 935: /***********************************************/
! 936: /* Fetch */
! 937: /***********************************************/
! 938: sword ofetch( /*_ struct csrdef *cursor _*/ );
! 939: sword ofen( /*_ struct csrdef *cursor, word nrows _*/ );
! 940:
! 941: /******************************************/
! 942: /* Non-blocking operations */
! 943: /******************************************/
! 944: sword onbset( /*_ ldadef *lda _*/ ); /* set a connection to non-blocking */
! 945: sword onbtst( /*_ ldadef *lda _*/ ); /* test if connection is non-blocking */
! 946: sword onbclr( /*_ ldadef *lda _*/ ); /* clear a connection to blocking */
! 947: sword onblon( /*_ ldadef *lda, struct hstdef *hst, text *conn,
! 948: sword connl, text *uid, sword uidl,
! 949: text *psw, sword pswl, sword audit _*/ );
! 950: /* logon in non-blocking fashion */
! 951: sword ocignfd( /*_ ldadef *lda, dvoid *nfdp _*/); /* get native fd */
! 952:
! 953: ub2 ocigft_getFcnType( /*_ ub2 oertyp _*/ ); /* get sql function code */
! 954:
! 955: #endif
E-mail: