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
		
			
				
	
	
		
			887 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			887 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (c) 1981, 2005, Oracle. All rights reserved.  */
 | |
| /* Copyright (c) 1984, 2005, Oracle. All rights reserved.  */
 | |
|  
 | |
| /*
 | |
| NAME
 | |
|   ocidef
 | |
| CONTENTS
 | |
|   Oracle Call Interface cursor area and LDA definitions
 | |
| NOTES
 | |
|   none
 | |
| OWNER
 | |
|   Oates
 | |
| DATE
 | |
|   09/07/82
 | |
| MODIFIED
 | |
|     mbastawa   09/16/05  - dbhygiene
 | |
|     dmukhin    06/29/05  - ANSI prototypes; miscellaneous cleanup 
 | |
|     srseshad   03/25/03  - convert oci public api to ansi
 | |
|     csteinba   11/05/02  - bug 2521931: redefine OTYACL
 | |
|     aahluwal   06/03/02  - bug 2360115
 | |
|     bpalaval   02/08/01  - Change text to oratext.
 | |
|     chliang    02/01/01  - fix olint error.
 | |
|     bpalaval   11/16/00  - Bug 1244685 : Fix ALTER CLUSTER issue..
 | |
|     slari      11/08/00  - remove functions duplicated in ociapr.h
 | |
|     whe        09/01/99 -  976457:check __cplusplus for C++ code
 | |
|     skmishra   04/23/97 -  Provide C++ compatibility
 | |
|     lchidamb   06/26/96 -  put upidef.h, riddef.h within #ifndef
 | |
|     slari      06/12/96 -  add ocigft_getFcnType
 | |
|     dchatter   11/10/95 -  ocignfd - oci get native file descriptor
 | |
|     slari      05/11/95 -  change OCIEVDEF/OCIEVTSF to UPIEVDEF/UPIEVTSF
 | |
|     dchatter   04/06/95 -  add ifdef flags around OCI_flags
 | |
|     lchidamb   04/06/95 -  drop maxdsz from ocibndps/ocidfnps
 | |
|     slari      04/07/95 -  rename opinit to ocipin
 | |
|     slari      03/13/95 -  thread safety changes
 | |
|     dchatter   03/08/95 -  piece definitions OCI_*_PIECE
 | |
|     lchidamb   12/06/94 -  add support for binding/defining with skips
 | |
|     dchatter   03/06/95 -  merge changes from branch 1.12.720.1
 | |
|     dchatter   02/06/95 -  add defines for login mode parameters
 | |
|     dchatter   07/06/94 -  Deleting CRSCHK, with refcursor, no way to set this
 | |
|     dchatter   06/13/94 -  add a new LDA flag LDANBL
 | |
|     rkooi      11/18/92 -  update ocidpr interface 
 | |
|     mmoore     10/31/92 -  add ocidpr 
 | |
|     gpongrac   11/17/92 -  fix oexfet prototype 
 | |
|     sjain      01/03/92 -  Add ocibra 
 | |
|     rjenkins   11/04/91 -  adding prototypes for oparse and oexfet 
 | |
|     sjain      04/15/91 -         Change ocistf proto 
 | |
|     sjain      04/01/91 -         Rearrange oty codes. Add new ones 
 | |
|     Jain       12/03/90 - Add #define for new describe call
 | |
|     Jain       11/29/90 - Add new function code for the new oci calls
 | |
|     Mendels    01/20/89 - fix 19170: make ocitbl CONST_DATA
 | |
|     Kabcene    01/27/88 - change interfaces to match V5
 | |
|     Navab      12/09/87 - add a parameter to ocierr call
 | |
|     Navab      11/30/87 - add ocierr, rename ocioer
 | |
|     Navab      10/08/87 - add prototypes for procedure declarations
 | |
|     Howard     09/07/87 - endif blah
 | |
|     Howard     05/11/87 - Add OTY types
 | |
|     Howard     04/27/87 - move ocldef defines here
 | |
|     Oates      10/15/85 - Add OCANCEL
 | |
|     Oates      09/30/85 - Implement ORA*Net
 | |
|     Oates      06/27/85 - Make datatype compatible with upidef.h
 | |
|     Andy       05/07/85 - delete CSRFBPIC
 | |
| */
 | |
| 
 | |
| #ifndef UPIDEF 
 | |
| #include <upidef.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef RIDDEF
 | |
| #include <riddef.h>
 | |
| #endif
 | |
| 
 | |
| #include <ociapr.h>
 | |
| 
 | |
| #ifndef OCIDEF
 | |
| #define OCIDEF
 | |
|  
 | |
|  
 | |
| #define CSRCHECK 172                                   /* csrdef is a cursor */
 | |
| #define LDACHECK 202                          /* csrdef is a login data area */
 | |
| struct csrdef
 | |
| {
 | |
|    sb2     csrrc;                /* return code: v2 codes, v4 codes negative */
 | |
|    ub2     csrft;                                           /* function type */
 | |
|    ub4     csrrpc;                                   /* rows processed count */
 | |
|    ub2     csrpeo;                                     /* parse error offset */
 | |
|    ub1     csrfc;                                           /* function code */
 | |
|    ub1     csrlfl;                     /* lda flag to indicate type of login */
 | |
|    ub2     csrarc;                        /* actual untranslated return code */
 | |
|    ub1     csrwrn;                                          /* warning flags */
 | |
|    ub1     csrflg;                                           /* error action */
 | |
|    sword   csrcn;                                           /* cursor number */
 | |
|    riddef  csrrid;                                        /* rowid structure */
 | |
|    sword   csrose;                                /* os dependent error code */
 | |
|    ub1     csrchk;                      /* check byte = CSRCHECK - in cursor */
 | |
|                                         /* check byte = LDACHECK - in    LDA */
 | |
|    struct hstdef *csrhst;                              /* pointer to the hst */
 | |
| };
 | |
| typedef struct csrdef csrdef;
 | |
| typedef struct csrdef ldadef;                    /* lda is the same as a csr */
 | |
|  
 | |
|  
 | |
| /* values for csrlfl */
 | |
| #define LDAFLG 1                                            /* ...via ologon */
 | |
| #define LDAFLO 2                                     /* ...via olon or orlon */
 | |
| #define LDANBL 3                                  /* ...nb logon in progress */
 | |
|  
 | |
| /* valuses for crsfc */
 | |
| #define csrfpa 2                                                  /* ...OSQL */
 | |
| #define csrfex 4                                                 /* ...OEXEC */
 | |
| #define csrfbi 6                                                 /* ...OBIND */
 | |
| #define csrfdb 8                                                /* ...ODFINN */
 | |
| #define csrfdi 10                                               /* ...ODSRBN */
 | |
| #define csrffe 12                                               /* ...OFETCH */
 | |
| #define csrfop 14                                                /* ...OOPEN */
 | |
| #define csrfcl 16                                               /* ...OCLOSE */
 | |
| #define csrfds 22                                                 /* ...ODSC */
 | |
| #define csrfnm 24                                                /* ...ONAME */
 | |
| #define csrfp3 26                                                /* ...OSQL3 */
 | |
| #define csrfbr 28                                               /* ...OBNDRV */
 | |
| #define csrfbx 30                                               /* ...OBNDRN */
 | |
| /*#defe csrfdf 32*/                                                  /* ???? */
 | |
| #define csrfso 34                                                 /* ...OOPT */
 | |
| #define csrfre 36                                               /* ...ORESUM */
 | |
| #define csrfbn 50                                               /* ...OBINDN */
 | |
| #define csrfca 52                                               /* ..OCANCEL */
 | |
| #define csrfsd 54                                                 /* ..OSQLD */
 | |
| #define csrfef 56                                                /* ..OEXFEN */
 | |
| #define csrfln 58                                                 /* ..OFLNG */
 | |
| #define csrfdp 60                                                /* ..ODSCSP */
 | |
| #define csrfba 62                                                /* ..OBNDRA */
 | |
| #define csrfbps 63                                               /*..OBINDPS */
 | |
| #define csrfdps 64                                              /*..ODEFINPS */
 | |
| #define csrfgpi 65                                              /* ...OGETPI */
 | |
| #define csrfspi 66                                              /* ...OSETPI */
 | |
| 
 | |
| /* values for csrwrn */
 | |
| #define CSRWANY  0x01                         /* there is a warning flag set */
 | |
| #define CSRWTRUN 0x02                           /* a data item was truncated */
 | |
| #define CSRWNVIC 0x04      /* NULL values were used in an aggregate function */
 | |
| #define CSRWITCE 0x08           /* column count not equal to into list count */
 | |
| #define CSRWUDNW 0x10               /* update or delete without where clause */
 | |
| #define CSRWRSV0 0x20
 | |
| #define CSRWROLL 0x40                                   /* rollback required */
 | |
| #define CSRWRCHG 0x80       /* change after query start on select for update */
 | |
|  
 | |
| /* values fro csrflg */
 | |
| #define CSRFSPND 0x01                         /* current operation suspended */
 | |
| #define CSRFATAL 0x02            /* fatal operation: transaction rolled back */
 | |
| #define CSRFBROW 0x04                              /* current row backed out */
 | |
| #define CSRFREFC 0x08     /* ref cursor type CRSCHK disabled for this cursor */
 | |
| #define CSRFNOAR 0x10     /* ref cursor type binds, so no array bind/execute */
 | |
|  
 | |
| /* define function codes; in order of octdef.h */
 | |
| #define OTYCTB 1                                             /* CREATE TABLE */
 | |
| #define OTYSER 2                                                 /* set role */
 | |
| #define OTYINS 3                                                   /* INSERT */
 | |
| #define OTYSEL 4                                                   /* SELECT */
 | |
| #define OTYUPD 5                                                   /* UPDATE */
 | |
| #define OTYDRO 6                                                /* drop role */
 | |
| #define OTYDVW 7                                                /* DROP VIEW */
 | |
|                                                   /* once was validate index */
 | |
|                                                 /* once was create partition */
 | |
|                                                  /* once was alter partition */
 | |
| #define OTYDTB 8                                               /* DROP TABLE */
 | |
|                                                      /* once was alter space */
 | |
|                                                       /* once was drop space */
 | |
| #define OTYDEL 9                                                   /* DELETE */
 | |
| #define OTYCVW 10                                             /* create view */
 | |
| #define OTYDUS 11                                               /* drop user */
 | |
| #define OTYCRO 12                                             /* create role */
 | |
| #define OTYCSQ 13                                         /* create sequence */
 | |
| #define OTYASQ 14                                          /* alter sequence */
 | |
| #define OTYACL 15                                           /* alter cluster */
 | |
| #define OTYDSQ 16                                           /* drop sequence */
 | |
| #define OTYCSC 17                                           /* create schema */
 | |
| #define OTYCCL 18                                          /* CREATE CLUSTER */
 | |
|                                                    /* once was alter cluster */
 | |
| #define OTYCUS 19                                             /* create user */
 | |
| #define OTYCIX 20                                            /* CREATE INDEX */
 | |
| #define OTYDIX 21                                              /* DROP INDEX */
 | |
| #define OTYDCL 22                                            /* DROP CLUSTER */
 | |
| #define OTYVIX 23                                          /* validate index */
 | |
| #define OTYCPR 24                                        /* create procedure */
 | |
| #define OTYAPR 25                                         /* alter procedure */
 | |
| #define OTYATB 26                                             /* alter table */
 | |
|                                                         /* once was evaluate */
 | |
| #define OTYXPL 27                                                 /* explain */
 | |
| #define OTYGRA 28                                                   /* grant */
 | |
| #define OTYREV 29                                                  /* revoke */
 | |
| #define OTYCSY 30                                          /* create synonym */
 | |
| #define OTYDSY 31                                            /* drop synonym */
 | |
| #define OTYASY 32                                 /* alter system switch log */
 | |
| #define OTYSET 33                                         /* set transaction */
 | |
| #define OTYPLS 34                                          /* pl/sql execute */
 | |
| #define OTYLTB 35                                                    /* lock */
 | |
| #define OTYNOP 36                                                    /* noop */
 | |
| #define OTYRNM 37                                                  /* rename */
 | |
| #define OTYCMT 38                                                 /* comment */
 | |
| #define OTYAUD 39                                                   /* audit */
 | |
| #define OTYNOA 40                                                /* no audit */
 | |
| #define OTYAIX 41                                             /* ALTER INDEX */
 | |
| #define OTYCED 42                                /* create external database */
 | |
| #define OTYDED 43                                  /* drop external database */
 | |
| #define OTYCDB 44                                         /* create database */
 | |
| #define OTYADB 45                                          /* alter database */
 | |
| #define OTYCRS 46                                 /* create rollback segment */
 | |
| #define OTYARS 47                                  /* alter rollback segment */
 | |
| #define OTYDRS 48                                   /* drop rollback segment */
 | |
| #define OTYCTS 49                                       /* create tablespace */
 | |
| #define OTYATS 50                                        /* alter tablespace */
 | |
| #define OTYDTS 51                                         /* drop tablespace */
 | |
| #define OTYASE 52                                           /* alter session */
 | |
| #define OTYAUR 53                                              /* alter user */
 | |
| #define OTYCWK 54                                           /* commit (work) */
 | |
| #define OTYROL 55                                                /* rollback */
 | |
| #define OTYSPT 56                                               /* savepoint */
 | |
|  
 | |
| /* For number greater than 56 the the type is the same as defined in 
 | |
| ** octdef.h for that number. So for completion look at octdef.h 
 | |
| */
 | |
| 
 | |
| #define OTYDEV OTYCVW                       /* old DEFINE VIEW = create view */
 | |
|  
 | |
| /* FUNCTION CODES */
 | |
| #define OCLFPA  2                                            /* parse - OSQL */
 | |
| #define OCLFEX  4                                         /* execute - OEXEC */
 | |
| #define OCLFBI  6                                    /* BIND by name - OBIND */
 | |
| #define OCLFDB  8                                 /* define buffer -  ODEFIN */
 | |
| #define OCLFDI  10                                   /* describe item - ODSC */
 | |
| #define OCLFFE  12                                         /* fetch - OFETCH */
 | |
| #define OCLFOC  14                                    /* open cursor - OOPEN */
 | |
| #       define OCLFLI  OCLFOC            /* old name for open cursor - OOPEN */
 | |
| #define OCLFCC  16                                  /* close cursor - OCLOSE */
 | |
| #       define OCLFLO  OCLFCC          /* old name for close cursor - OCLOSE */
 | |
| #define OCLFDS  22                                        /* describe - ODSC */
 | |
| #define OCLFON  24                     /* get table and column names - ONAME */
 | |
| #define OCLFP3  26                                          /* parse - OSQL3 */
 | |
| #define OCLFBR  28                        /* bind reference by name - OBNDRV */
 | |
| #define OCLFBX  30                        /* bind referecne numeric - OBNDRN */
 | |
| #define OCLFSO  34                                /* special function - OOPT */
 | |
| #define OCLFRE  36                                        /* resume - ORESUM */
 | |
| #define OCLFBN  50                                                  /* bindn */
 | |
| #define OCLFMX  52                                /* maximum function number */
 | |
| 
 | |
| #ifdef NEVER                                                 /* unused codes */
 | |
| # define OCLFLK  18                           /* open  for kernel operations */
 | |
| # define OCLFEK  20                             /* execute kernel operations */
 | |
| # define OCLFOK  22                                          /* kernel close */
 | |
| # define OCLFIN  28                                       /* logon to oracle */
 | |
| # define OCLFOF  30                                    /* logoff from oracle */
 | |
| # define OCLFAX  32                               /* allocate a context area */
 | |
| # define OCLFPI  34                                  /* page in context area */
 | |
| # define OCLFIS  36                                  /* special system logon */
 | |
| # define OCLFCO  38                          /* cancel the current operation */
 | |
| # define OCLFGI  40                                       /* get database id */
 | |
| # define OCLFJN  42                                     /* journal operation */
 | |
| # define OCLFCL  44                       /* cleanup prior execute operation */
 | |
| # define OCLFMC  46                                     /* map a cursor area */
 | |
| # define OCLFUC  48                  /* unmap cursor and restore user maping */
 | |
| #endif /*NEVER                                           *//* obsolete codes */
 | |
|  
 | |
| 
 | |
| /* values for ocimode in ocipin call */
 | |
| 
 | |
| #define OCIEVDEF UPIEVDEF           /* default : non-thread safe enivronment */
 | |
| #define OCIEVTSF UPIEVTSF                         /* thread-safe environment */
 | |
| 
 | |
| 
 | |
| /* OCIL* flags used to determine the mode of login, using ocilog().
 | |
| ** Currently defined only for non-blocking and thread-safe logins.
 | |
| */
 | |
| 
 | |
| #define OCILMDEF        UPILMDEF                   /* default, regular login */
 | |
| #define OCILMNBL        UPILMNBL                       /* non-blocking logon */
 | |
| #define OCILMESY        UPILMESY            /* thread safe but external sync */
 | |
| #define OCILMISY        UPILMISY                  /* internal sync, we do it */
 | |
| #define OCILMTRY        UPILMTRY        /* try to, but do not block on mutex */
 | |
| 
 | |
| 
 | |
| /* 
 | |
|  * since sqllib uses both ocidef and ocidfn the following defines
 | |
|  * need to be guarded
 | |
|  */
 | |
| #ifndef OCI_FLAGS 
 | |
| #define OCI_FLAGS
 | |
| 
 | |
| /* OCI_*_PIECE defines the piece types that are returned or set
 | |
| */
 | |
| 
 | |
| #define OCI_ONE_PIECE   UPI_ONE_PIECE     /* there or this is the only piece */
 | |
| #define OCI_FIRST_PIECE UPI_FIRST_PIECE          /* the first of many pieces */
 | |
| #define OCI_NEXT_PIECE  UPI_NEXT_PIECE            /* the next of many pieces */
 | |
| #define OCI_LAST_PIECE  UPI_LAST_PIECE      /* the last piece of this column */
 | |
| #endif
 | |
| 
 | |
| /*
 | |
| **  OCITAB: define return code pairs for version 2 to 3 conversions
 | |
| */
 | |
| struct  ocitab
 | |
| {
 | |
|    sb2  ocitv3;                                   /* Version 3/4 return code */
 | |
|    sb2  ocitv2;                          /* Version 2 equivalent return code */
 | |
| };
 | |
| typedef struct ocitab ocitab;
 | |
|  
 | |
| externref const ocitab ocitbl[];
 | |
|  
 | |
| /* macros to check cursors and LDA's.  */
 | |
| /* macros to set error codes           */
 | |
| 
 | |
| # define CRSCHK(c)     if ((c->csrchk != CSRCHECK)\
 | |
|                             && !bit(c->csrflg, CSRFREFC))\
 | |
|                           return(ocir32(c, OER(1001)))
 | |
| # define ldaerr(l, e)  ( l->csrrc = (sb2)(-( l->csrarc = (ub2)(e)) ) )
 | |
| # define LDACHK(l)     if (l->csrchk != LDACHECK) \
 | |
|                           return(ldaerr(l, OER(1001)))
 | |
|  
 | |
| 
 | |
| /************************************************/
 | |
| /*         OCI PROCEDURE DECLARATIONS           */
 | |
| /************************************************/ 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /*****************************/
 | |
| /*  Database logon/logout    */
 | |
| /*****************************/
 | |
| sword ocilog(  ldadef *lda, struct hstdef *hst, oratext *uid, sword uidl, 
 | |
|                   oratext *psw, sword pswl, oratext* conn, sword connl,
 | |
|                   ub4 mode );
 | |
| sword ocilon(  ldadef *lda, oratext *uid, sword uidl, oratext *psw, 
 | |
|                   sword pswl, sword audit );
 | |
| sword  ocilgi(  ldadef *lda, sb2 areacount  );
 | |
| sword ocirlo(  ldadef *lda, struct hstdef *hst, oratext *uid, sword uidl,
 | |
|             oratext *psw, sword pswl, sword audit  );
 | |
|      /* ocilon - logon to oracle
 | |
|      ** ocilgi - version 2 compatible ORACLE logon call.
 | |
|      **          no login to ORACLE is performed: the LDA is initialized
 | |
|      ** ocirlo - version 5 compatible ORACLE Remote Login call,
 | |
|      **          oracle login is executed.
 | |
|      **   lda     - pointer to ldadef
 | |
|      **   uid     - user id [USER[/PASSWORD]]
 | |
|      **   uidl    - length of uid, if -1 strlen(uid) is used
 | |
|      **   psw     - password string; ignored if specified in uid
 | |
|      **   pswl    - length of psw, if -1 strlen(psw) is used
 | |
|      **   audit   - is not supported; the only permissible value is 0
 | |
|      **   areacount - unused
 | |
|      */
 | |
| 
 | |
| sword ocilof(  ldadef *lda  );
 | |
|      /*
 | |
|      ** ocilof - disconnect from ORACLE
 | |
|      **   lda     - pointer to ldadef
 | |
|      */
 | |
| 
 | |
| 
 | |
| /*********************/
 | |
| /*   Error Messages  */
 | |
| /*********************/
 | |
| sword ocierr(  ldadef *lda, sb2 rcode, oratext *buffer, sword bufl  );
 | |
| sword ocidhe(  sb2 rcode, oratext *buffer  );
 | |
|     /* 
 | |
|     ** Move the text explanation for an ORACLE error to a user defined buffer
 | |
|     **  ocierr - will return the message associated with the hstdef stored 
 | |
|     **           in the lda.
 | |
|     **  ocidhe - will return the message associated with the default host.
 | |
|     **    lda    - lda associated with the login session
 | |
|     **    rcode  - error code as returned by V3 call interface
 | |
|     **    buffer - address of a user buffer of at least 132 characters
 | |
|     */
 | |
| 
 | |
| 
 | |
| /***********************/
 | |
| /*  Cursor Open/Close  */
 | |
| /***********************/
 | |
| sword ociope(  struct csrdef *cursor, ldadef *lda, oratext *dbn, sword dbnl, 
 | |
|                  sword areasize, oratext *uid, sword uidl  );
 | |
| 
 | |
| sword ociclo(  struct csrdef *cursor  );
 | |
|    /* 
 | |
|    ** open or close a cursor.
 | |
|    **   cursor - pointer to csrdef
 | |
|    **   ldadef - pointer to ldadef
 | |
|    **   dbn    - unused
 | |
|    **   dbnl   - unused
 | |
|    **   areasize - if (areasize == -1)  areasize <- system default initial size
 | |
|    **              else if (areasize IN [1..256]) areasize <- areasize * 1024;
 | |
|    **              most applications should use the default size since context
 | |
|    **              areas are extended as needed until memory is exhausted.
 | |
|    **   uid    - user id
 | |
|    **   uidl   - userid length
 | |
|    */
 | |
| 
 | |
| /***********************************/
 | |
| /*      CONTROL AND OPTIONS        */
 | |
| /***********************************/
 | |
| sword ocibre(  ldadef *lda  );
 | |
|    /*
 | |
|    **  ocibrk - Oracle Call Interface send BReaK Sends a break to
 | |
|    **  oracle.  If oracle is  active,  the  current  operation  is
 | |
|    **  cancelled.  May be called  asynchronously.   DOES  NOT  SET
 | |
|    **  OERRCD in the hst.  This is because ocibrk  may  be  called
 | |
|    **  asynchronously.  Callers must test the return code.
 | |
|    **    lda  - pointer to a ldadef 
 | |
|    */
 | |
| 
 | |
| sword ocican(  struct csrdef *cursor  );
 | |
|    /*
 | |
|    **  cancel the operation on the cursor, no additional OFETCH calls
 | |
|    **  will be issued for the existing cursor without an intervening 
 | |
|    **  OEXEC call.
 | |
|    **   cursor  - pointer to csrdef
 | |
|    */
 | |
| 
 | |
| sword ocisfe(  struct csrdef *cursor, sword erropt, sword waitopt  );
 | |
|    /* 
 | |
|    ** ocisfe - user interface set error options
 | |
|    ** set the error and cursor options.
 | |
|    ** allows user to set the options for dealing with fatal dml errors
 | |
|    ** and other cursor related options
 | |
|    ** see oerdef for valid settings
 | |
|    **   cursor  - pointer to csrdef
 | |
|    **   erropt  - error optionsn
 | |
|    **   waitopr - wait options
 | |
|    */
 | |
| 
 | |
| 
 | |
| /***************************************/
 | |
| /* COMMIT/ROLLBACK/AUTOCOMMIT          */
 | |
| /***************************************/
 | |
| sword   ocicom(  ldadef *lda  );
 | |
| sword   ocirol(  ldadef *lda  );
 | |
|    /*
 | |
|    ** ocicom - commit the current transaction
 | |
|    ** ocirol - roll back the current transaction
 | |
|    */
 | |
|  
 | |
| sword   ocicon(  ldadef *lda  );
 | |
| sword   ocicof(  ldadef *lda  );
 | |
|    /*
 | |
|    ** ocicon - auto Commit ON
 | |
|    ** ocicof - auto Commit OFf
 | |
|    */
 | |
| 
 | |
| 
 | |
|  
 | |
| /************************/
 | |
| /*     parsing          */
 | |
| /************************/
 | |
| sword    ocisq3(struct csrdef *cursor, oratext * /* sqlstm */, sword sqllen);
 | |
|    /*
 | |
|    ** ocisq3 - user interface parse sql statement
 | |
|    **   cursor - pointer to csrdef
 | |
|    **   sqlstm - pointer to SQL statement
 | |
|    **   sqllen - length of SQL statement.  if -1, strlen(sqlstm) is used
 | |
|    */
 | |
| 
 | |
| 
 | |
| 
 | |
| /***************************/
 | |
| /*      BINDING            */
 | |
| /***************************/
 | |
| /* these are for the opcode in ocibndps, ocidfnps */
 | |
| #define OCI_PCWS 0
 | |
| #define OCI_SKIP 1
 | |
| 
 | |
| sword ocibin(  struct csrdef *cursor, oratext *sqlvar, sword sqlvl, 
 | |
|                   ub1 *progv, sword progvl, sword ftype, sword scale, 
 | |
|                   oratext *fmt, sword fmtl, sword fmtt  );
 | |
| sword  ocibrv(  struct csrdef *cursor, oratext *sqlvar, sword sqlvl, 
 | |
|                 ub1 *progv, sword progvl, sword ftype, sword scale, sb2 *indp,
 | |
|                 oratext *fmt, sword fmtl, sword fmtt  );
 | |
| sword  ocibra(  struct csrdef *cursor, oratext *sqlvar, sword sqlvl, 
 | |
|                    ub1 *progv, sword progvl, sword ftype, sword scale, 
 | |
|                    sb2 *indp, ub2 *aln, ub2 *rcp, ub4 mal, ub4 *cal, 
 | |
|                    oratext *fmt, sword fmtl, sword fmtt  );
 | |
| sword  ocibndps(  struct csrdef *cursor, ub1 opcode, oratext *sqlvar, 
 | |
|                      sb4 sqlvl, ub1 *progv, sb4 progvl, sword ftype, 
 | |
|                      sword scale, sb2 *indp, ub2 *aln, ub2 *rcp, sb4 pv_skip, 
 | |
|                      sb4 ind_skip, sb4 len_skip, sb4 rc_skip, ub4 mal, 
 | |
|                      ub4 *cal, oratext *fmt, sb4 fmtl, sword fmtt  );
 | |
| sword ocibnn (  struct csrdef *cursor, ub2 sqlvn, ub1 *progv, sword progvl,
 | |
|                    sword ftype, sword scale, oratext *fmt, sword fmtl, 
 | |
|                    sword fmtt  );
 | |
| sword  ocibrn(  struct csrdef *cursor, sword sqlvn, ub1 *progv, sword progvl,
 | |
|                 sword ftype, sword scale, sb2 *indp, oratext *fmt, sword fmtl, 
 | |
|                 sword fmtt  );
 | |
|     /*
 | |
|     ** ocibin - bind by value by name
 | |
|     ** ocibrv - bind by reference by name
 | |
|     ** ocibra - bind by reference by name (array)
 | |
|     ** ocibndps - bind by reference by name (array) piecewise or with skips
 | |
|     ** ocibnn - bind by value numeric
 | |
|     ** ocibrn - bind by reference numeric
 | |
|     **
 | |
|     ** the contents of storage specified in bind-by-value calls are
 | |
|     ** evaluated immediately.
 | |
|     ** the addresses of storage specified in bind-by-reference calls are
 | |
|     ** remembered, and the contents are examined at every execute.
 | |
|     **
 | |
|     **  cursor  - pointer to csrdef
 | |
|     **  sqlvn   - the number represented by the name of the bind variables
 | |
|     **            for variables of the form :n or &n for n in [1..256)
 | |
|     **            (i.e. &1, :234).  unnecessarily using larger numbers
 | |
|     **            in the range wastes space.
 | |
|     **  sqlvar  - the name of the bind variable (:name or &name)
 | |
|     **  sqlval  - the length of the name;
 | |
|     **            in bindif -1, strlen(bvname) is used
 | |
|     **  progv   - pointer to the object to bind.
 | |
|     **  progvl  - length of object to bind.
 | |
|     **            in bind-by-value if specified as -1 then strlen(bfa) is
 | |
|     **              used (really only makes sends with character types)
 | |
|     **            in bind-by-value, if specified as -1 then UB2MAXVAL
 | |
|     **              is used.  Again this really makes sense only with
 | |
|     **              SQLT_STR.
 | |
|     **  ftype   - datatype of object
 | |
|     **  indp    - pointer to indicator variable.
 | |
|     **              -1     means to ignore bfa/bfl and bind NULL;
 | |
|     **              not -1 means to bind the contents of bfa/bfl
 | |
|     **              bind the contents pointed to by bfa
 | |
|     **  aln     - Alternate length pointer
 | |
|     **  rcp     - Return code pointer
 | |
|     **  mal     - Maximum array length
 | |
|     **  cal     - Current array length pointer
 | |
|     **  fmt     - format string
 | |
|     **  fmtl    - length of format string; if -1, strlen(fmt) is used
 | |
|     **  fmtt    - desired output type after applying forat mask. Not
 | |
|     **            really yet implemented
 | |
|     **  scale   - number of decimal digits in a cobol packed decimal (type 7)
 | |
|     **
 | |
|     ** Note that the length of bfa when bound as SQLT_STR is reduced
 | |
|     ** to strlen(bfa).
 | |
|     ** Note that trailing blanks are stripped of storage of SQLT_STR.
 | |
|     */
 | |
|     
 | |
| /***************************/
 | |
| /*        DESCRIBING       */
 | |
| /***************************/
 | |
| sword ocidsc (  struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *fsize,
 | |
|              sb2 *rcode, sb2 *dtype, sb1 *buf, sb2 *bufl, sb2 *dsize  );
 | |
| sword ocidsr(  struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *dtype, 
 | |
|             sb2 *fsize  );
 | |
| sword   ocinam(  struct csrdef *cursor, sword pos, sb1 *tbuf, sb2 *tbufl,
 | |
|                 sb1 *buf, sb2 *bufl );
 | |
|     /*
 | |
|     **  ocidsc, ocidsr: Obtain information about a column
 | |
|     **  ocinam : get the name of a column
 | |
|     **   cursor  - pointer to csrdef
 | |
|     **   pos     - position in select list from [1..N]
 | |
|     **   dbsize  - place to store the database size
 | |
|     **   fsize   - place to store the fetched size
 | |
|     **   rcode   - place to store the fetched column returned code
 | |
|     **   dtype   - place to store the data type
 | |
|     **   buf     - array to store the column name
 | |
|     **   bufl    - place to store the column name length
 | |
|     **   dsize   - maximum display size
 | |
|     **   tbuf    - place to store the table name
 | |
|     **   tbufl   - place to store the table name length
 | |
|     */
 | |
| 
 | |
| sword ocidsp (  struct csrdef *cursor, sword pos, sb4 *dbsize, sb2 *dbtype,
 | |
|                    sb1 *cbuf, sb4 *cbufl, sb4 *dsize, sb2 *pre, sb2 *scl,
 | |
|                    sb2 *nul );
 | |
| 
 | |
| sword ocidpr( ldadef *lda, oratext *object_name, size_t object_length,
 | |
|                 void * reserved1, size_t reserved1_length, void * reserved2,
 | |
|                 size_t reserved2_length, ub2 *overload, ub2 *position,
 | |
|                 ub2 *level, oratext **argument_name, ub2 *argument_length, 
 | |
|                 ub2 *datatype, ub1 *default_supplied, ub1 *in_out, 
 | |
|                 ub4 *length, sb2 *precision, sb2 *scale, ub1 *radix, 
 | |
|                 ub4 *spare, ub4 *total_elements );
 | |
|    /*
 | |
|    ** OCIDPR - User Program Interface: Describe Stored Procedure
 | |
|    **
 | |
|    ** This routine is used to obtain information about the calling
 | |
|    ** arguments of a stored procedure.  The client provides the 
 | |
|    ** name of the procedure using "object_name" and "database_name"
 | |
|    ** (database name is optional).  The client also supplies the 
 | |
|    ** arrays for OCIDPR to return the values and indicates the 
 | |
|    ** length of array via the "total_elements" parameter.  Upon return
 | |
|    ** the number of elements used in the arrays is returned in the 
 | |
|    ** "total_elements" parameter.  If the array is too small then 
 | |
|    ** an error will be returned and the contents of the return arrays 
 | |
|    ** are invalid.
 | |
|    **
 | |
|    **
 | |
|    **   EXAMPLE :
 | |
|    **
 | |
|    **   Client provides -
 | |
|    **
 | |
|    **   object_name    - SCOTT.ACCOUNT_UPDATE@BOSTON
 | |
|    **   total_elements - 100
 | |
|    **   
 | |
|    **
 | |
|    **   ACCOUNT_UPDATE is an overloaded function with specification :
 | |
|    **
 | |
|    **     type number_table is table of number index by binary_integer;
 | |
|    **     table account (account_no number, person_id number,
 | |
|    **                    balance number(7,2))
 | |
|    **     table person  (person_id number(4), person_nm varchar2(10))
 | |
|    **
 | |
|    **      function ACCOUNT_UPDATE (account number, 
 | |
|    **         person person%rowtype, amounts number_table,
 | |
|    **         trans_date date) return accounts.balance%type;
 | |
|    **
 | |
|    **      function ACCOUNT_UPDATE (account number, 
 | |
|    **         person person%rowtype, amounts number_table,
 | |
|    **         trans_no number) return accounts.balance%type;
 | |
|    **
 | |
|    **
 | |
|    **   Values returned -
 | |
|    **
 | |
|    **   overload position   argument  level  datatype length prec scale rad
 | |
|    **   -------------------------------------------------------------------
 | |
|    **          0        0                0   NUMBER     22    7     2   10
 | |
|    **          0        1   ACCOUNT      0   NUMBER     22    0     0    0
 | |
|    **          0        2   PERSON       0   RECORD      0    0     0    0
 | |
|    **          0        2     PERSON_ID  1   NUMBER     22    4     0   10
 | |
|    **          0        2     PERSON_NM  1   VARCHAR2   10    0     0    0
 | |
|    **          0        3   AMOUNTS      0   TABLE       0    0     0    0
 | |
|    **          0        3                1   NUMBER     22    0     0    0
 | |
|    **          0        4   TRANS_NO     0   NUMBER     22    0     0    0
 | |
|    **
 | |
|    **          1        0                0   NUMBER     22    7     2   10
 | |
|    **          1        1   ACCOUNT      0   NUMBER     22    0     0    0
 | |
|    **          1        2   PERSON       0   RECORD      0    0     0    0
 | |
|    **          1        2    PERSON_ID   1   NUMBER     22    4     0   10
 | |
|    **          1        2    PERSON_NM   1   VARCHAR2   10    0     0    0
 | |
|    **          1        3   AMOUNTS      0   TABLE       0    0     0    0
 | |
|    **          1        3                1   NUMBER     22    0     0    0
 | |
|    **          1        4   TRANS_DATE   0   NUMBER     22    0     0    0
 | |
|    **
 | |
|    **
 | |
|    **  OCIDPR Argument Descriptions -
 | |
|    **
 | |
|    **  ldadef           - pointer to ldadef
 | |
|    **  object_name      - object name, synonyms are also accepted and will 
 | |
|    **                     be translate, currently only procedure and function
 | |
|    **                     names are accepted, also NLS names are accepted.
 | |
|    **                     Currently, the accepted format of a name is 
 | |
|    **                     [[part1.]part2.]part3[@dblink] (required)
 | |
|    **  object_length    - object name length (required)
 | |
|    **  reserved1        - reserved for future use
 | |
|    **  reserved1_length - reserved for future use
 | |
|    **  reserved2        - reserved for future use
 | |
|    **  reserved2_length - reserved for future use
 | |
|    **  overload         - array indicating overloaded procedure # (returned)
 | |
|    **  position         - array of argument positions, position 0 is a 
 | |
|    **                     function return argument (returned)
 | |
|    **  level            - array of argument type levels, used to describe
 | |
|    **                     sub-datatypes of data structures like records
 | |
|    **                     and arrays (returned)
 | |
|    **  argument_name    - array of argument names, only returns first 
 | |
|    **                     30 characters of argument names, note storage
 | |
|    **                     for 30 characters is allocated by client (returned)
 | |
|    **  argument_length  - array of argument name lengths (returned)
 | |
|    **  datatype         - array of oracle datatypes (returned)
 | |
|    **  default_supplied - array indicating parameter has default (returned)
 | |
|    **                     0 = no default, 1 = default supplied
 | |
|    **  in_out           - array indicating if argument is IN or OUT (returned
 | |
|    **                     0 = IN param, 1 = OUT param, 2 = IN/OUT param
 | |
|    **  length           - array of argument lengths (returned)
 | |
|    **  precision        - array of precisions (if number type)(returned)
 | |
|    **  scale            - array of scales (if number type)(returned)
 | |
|    **  radix            - array of radix (if number type)(returned)
 | |
|    **  spare            - array of spares.
 | |
|    **  total_elements   - size of arrays supplied by client (required),
 | |
|    **                     total number of elements filled (returned)
 | |
|    */
 | |
| 
 | |
| /*************************************/
 | |
| /* DEFINING                          */
 | |
| /*************************************/
 | |
| sword ocidfi(  struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
 | |
|                   sword ftype, sb2 *rc, sword scale  );
 | |
| sword ocidfn(  struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
 | |
|                  sword ftype, sword scale, sb2 *indp, oratext *fmt, sword fmtl,
 | |
|                  sword fmtt, ub2 *rl, ub2 *rc  );
 | |
| sword ocidfnps(  struct csrdef *cursor, ub1 opcode, sword pos, ub1 *buf, 
 | |
|                     sb4 bufl, sword ftype, sword scale,  
 | |
|                     sb2 *indp, oratext *fmt, sb4 fmtl,
 | |
|                     sword fmtt, ub2 *rl, ub2 *rc,
 | |
|                     sb4 pv_skip, sb4 ind_skip, sb4 len_skip, 
 | |
|                     sb4 rc_skip  );
 | |
| 
 | |
| 
 | |
|    /*  Define a user data buffer using upidfn
 | |
|    **   cursor  - pointer to csrdef
 | |
|    **   pos     - position of a field or exp in the select list of a query
 | |
|    **   bfa/bfl - address and length of client-supplied storage
 | |
|                   to receive data
 | |
|    **   ftype   - user datatype
 | |
|    **   scale   - number of fractional digits for cobol packed decimals
 | |
|    **   indp    - place to store the length of the returned value. If returned
 | |
|    **             value is:
 | |
|    **             negative, the field fetched was NULL
 | |
|    **             zero    , the field fetched was same length or shorter than
 | |
|    **               the buffer provided
 | |
|    **             positive, the field fetched was truncated
 | |
|    **   fmt    - format string
 | |
|    **   fmtl   - length of format string, if -1 strlent(fmt) used
 | |
|    **   rl     - place to store column length after each fetch
 | |
|    **   rc     - place to store column error code after each fetch
 | |
|    **   fmtt   - fomat type
 | |
|    */
 | |
|  
 | |
| /********************************/
 | |
| /*    PIECE INFORMATION GET/SET */
 | |
| /********************************/
 | |
| sword           ocigetpi(  struct csrdef *cursor, ub1 *piecep,
 | |
|                               void  **ctxpp, ub4 *iterp, ub4 *indexp  );
 | |
| sword           ocisetpi(  struct csrdef *cursor, ub1 piece,
 | |
|                               void  *bufp, ub4 *lenp  );
 | |
| 
 | |
| 
 | |
| /********************************/
 | |
| /*   EXECUTE                    */
 | |
| /********************************/
 | |
| sword ociexe(  struct csrdef *cursor  );
 | |
| sword ociexn(  struct csrdef *cursor, sword iters, sword roff  );
 | |
| sword ociefn(  struct csrdef *cursor, ub4 nrows, sword can, sword exact );
 | |
|     /* 
 | |
|     ** ociexe  - execute a cursor
 | |
|     ** ociexn  - execute a cursosr N times
 | |
|     **  cursor   - pointer to a csrdef
 | |
|     **  iters    - number of times to execute cursor
 | |
|     **  roff     - offset within the bind variable array at which to begin 
 | |
|     **             operations.
 | |
|     */
 | |
| 
 | |
| 
 | |
| /*********************************/
 | |
| /*     FETCHING                  */
 | |
| /*********************************/
 | |
| sword ocifet(  struct csrdef *cursor  );
 | |
| sword ocifen(  struct csrdef *cursor, sword nrows  );
 | |
|     /* ocifet - fetch the next row
 | |
|     ** ocifen - fetch n rows 
 | |
|     ** cursor   - pointer to csrdef
 | |
|     ** nrows    - number of rows to be fetched
 | |
|     */
 | |
| 
 | |
| sword ocilng( struct csrdef *cursor, sword posit, ub1 *bfa, sb4 bfl,
 | |
|                  sword dty, ub4 *rln, sb4 off );
 | |
| 
 | |
| /*********************************/
 | |
| /*         CONVERSION            */
 | |
| /*********************************/
 | |
| sword ocic32(  struct csrdef *cursor  );
 | |
|     /*
 | |
|     **   Convert selected version 3 return codes to the equivalent
 | |
|     **   version 2 code.
 | |
|     **   csrdef->csrrc is set to the converted code
 | |
|     **   csrdef->csrft is set to v2 oracle statment type
 | |
|     **   csrdef->csrrpc is set to the rows processed count
 | |
|     **   csrdef->csrpeo is set to error postion
 | |
|     ** 
 | |
|     **     cursor - pointer to csrdef
 | |
|     */
 | |
| 
 | |
| 
 | |
| sword ocir32(  struct csrdef *cursor, sword retcode  );
 | |
|    /*   
 | |
|    ** Convert selected version 3 return codes to the equivalent version 2 
 | |
|    ** code.
 | |
|    **
 | |
|    **    cursor - pointer to csrdef
 | |
|    **    retcode - place to store the return code
 | |
|    */
 | |
| 
 | |
| 
 | |
| void ociscn(  sword **arglst, char *mask_addr, sword **newlst  );
 | |
|    /*
 | |
|    ** Convert call-by-ref to call-by-value:
 | |
|    ** takes an arg list and a mask address, determines which args need 
 | |
|    ** conversion to a value, and creates a new list begging at the address
 | |
|    ** of newlst.
 | |
|    **
 | |
|    **    arglst    - list of arguments
 | |
|    **    mast_addr _ mask address determines args needing conversion
 | |
|    **    newlst    - new list of args
 | |
|    */
 | |
| 
 | |
| sword    ocistf (  sword typ, sword bufl, sword rdig, oratext *fmt, 
 | |
|                       struct csrdef *cursor, sword *err  );
 | |
| /*  Convert a packed  decimal buffer  length  (bytes) and scale to a format
 | |
| **  string of the form mm.+/-nn, where  mm is the number of packed 
 | |
| **  decimal digits, and nn is the scaling factor.   A positive scale name 
 | |
| **  nn digits to the rights of the decimal; a negative scale means nn zeros 
 | |
| **  should be supplied to the left of the decimal.
 | |
| **     bufl   - length of the packed decimal buffer
 | |
| **     rdig   - number of fractional digits
 | |
| **     fmt    - pointer to a string holding the conversion format
 | |
| **     cursor - pointer to csrdef 
 | |
| **     err    - pointer to word storing error code
 | |
| */ 
 | |
| 
 | |
| 
 | |
| /******************************************/
 | |
| /*         Non-blocking operations        */
 | |
| /******************************************/
 | |
| sword ocinbs(  ldadef *lda  );  /* set a connection to non-blocking   */
 | |
| sword ocinbt(  ldadef *lda  );  /* test if connection is non-blocking */
 | |
| sword ocinbc(  ldadef *lda  );  /* clear a connection to blocking     */
 | |
| sword ocinlo(  ldadef *lda, struct hstdef *hst, oratext *conn,
 | |
|                   sword connl, oratext *uid, sword uidl,
 | |
|                   oratext *psw, sword pswl, sword audit  );  
 | |
|               /* logon in non-blocking fashion */
 | |
| /* ocinlo allows an application to logon in non-blocking fashion.
 | |
| **   lda     - pointer to ldadef
 | |
| **   hst     - pointer to a 256 byte area, must be cleared to zero before call
 | |
| **   conn    - the database link (if specified @LINK in uid will be ignored)
 | |
| **   connl   - length of conn; if -1 strlen(conn) is used   
 | |
| **   uid     - user id [USER[/PASSWORD][@LINK]]
 | |
| **   uidl    - length of uid, if -1 strlen(uid) is used
 | |
| **   psw     - password string; ignored if specified in uid
 | |
| **   pswl    - length of psw, if -1 strlen(psw) is used
 | |
| **   audit   - is not supported; the only permissible value is 0
 | |
| */
 | |
| 
 | |
| /***************************************************/
 | |
| /*         Procedure Declaration for Pro*C         */
 | |
| /***************************************************/
 | |
| /* Note: The following routines are used in Pro*C and have the
 | |
|    same interface as their couterpart in OCI. 
 | |
|    Althought the interface follows for more details please refer 
 | |
|    to the above routines */
 | |
| 
 | |
| /******************************************/
 | |
| /*         initialization/logon/logof     */
 | |
| /******************************************/
 | |
| sword ocipin(  ub4 mode  );
 | |
| 
 | |
| sword ologin(  ldadef *lda, sb2 areacount  );
 | |
| sword ologon(  ldadef *lda, sb2 areacount  );
 | |
| 
 | |
| /*****************************************/
 | |
| /*        Open/Close/Parse Cursor        */
 | |
| /*****************************************/
 | |
| 
 | |
| /* 
 | |
| ** ocisqd - oci delayed parse (Should be used only with deferred upi/oci)
 | |
| ** FUNCTION: Call upidpr to delay the parse of the sql statement till the
 | |
| **           time that a call needs to be made to the kernel (execution or
 | |
| **           describe time )
 | |
| ** RETURNS: Oracle return code.
 | |
| */ 
 | |
| sword ocisq7( struct csrdef *cursor, oratext * /* sqlstm */, sb4 sqllen,
 | |
|                  sword defflg, ub4 sqlt );
 | |
| 
 | |
| /*****************************************/
 | |
| /*            Bind                       */
 | |
| /*****************************************/
 | |
| sword obind(  struct csrdef *cursor, oratext *sqlvar, sword sqlvl, 
 | |
|                  ub1 *progv, sword progvl, sword ftype, sword scale, 
 | |
|                  oratext *fmt, sword fmtl, sword fmtt  );
 | |
| sword obindn(  struct csrdef *cursor, ub2 sqlvn, ub1 *progv, sword progvl,
 | |
|                   sword ftype, sword scale, oratext *fmt, sword fmtl, 
 | |
|                   sword fmtt  );
 | |
| 
 | |
| /**********************************************/
 | |
| /*                 Define                     */
 | |
| /**********************************************/
 | |
| sword odfinn(  struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
 | |
|                   sword ftype, sb2 *rc, sword scale  );
 | |
| 
 | |
| /**********************************************/
 | |
| /*                 Describe                   */
 | |
| /**********************************************/
 | |
| sword odsrbn(  struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *dtype, 
 | |
|             sb2 *fsize  );
 | |
| 
 | |
| 
 | |
| /******************************************/
 | |
| /*         Non-blocking operations        */
 | |
| /******************************************/
 | |
| sword onblon(  ldadef *lda, struct hstdef *hst, oratext *conn,
 | |
|                   sword connl, oratext *uid, sword uidl,
 | |
|                   oratext *psw, sword pswl, sword audit  );  
 | |
|               /* logon in non-blocking fashion */
 | |
| sword ocignfd(  ldadef *lda, void  *nfdp );           /* get native fd */
 | |
| 
 | |
| ub2   ocigft_getFcnType(  ub2 oertyp  );      /* get sql function code */
 | |
| 
 | |
| #endif
 |