www.pudn.com > dynamicsql.rar > testproc.c


 
/* Result Sets Interface */ 
#ifndef SQL_CRSR 
#  define SQL_CRSR 
  struct sql_cursor 
  { 
    unsigned int curocn; 
    void *ptr1; 
    void *ptr2; 
    unsigned long magic; 
  }; 
  typedef struct sql_cursor sql_cursor; 
  typedef struct sql_cursor SQL_CURSOR; 
#endif /* SQL_CRSR */ 
 
/* Thread Safety */ 
typedef void * sql_context; 
typedef void * SQL_CONTEXT; 
 
/* Object support */ 
struct sqltvn 
{ 
  unsigned char *tvnvsn;  
  unsigned short tvnvsnl;  
  unsigned char *tvnnm; 
  unsigned short tvnnml;  
  unsigned char *tvnsnm; 
  unsigned short tvnsnml; 
}; 
typedef struct sqltvn sqltvn; 
 
struct sqladts 
{ 
  unsigned int adtvsn;  
  unsigned short adtmode;  
  unsigned short adtnum;   
  sqltvn adttvn[1];        
}; 
typedef struct sqladts sqladts; 
 
static struct sqladts sqladt = { 
  1,1,0, 
}; 
 
/* Binding to PL/SQL Records */ 
struct sqltdss 
{ 
  unsigned int tdsvsn;  
  unsigned short tdsnum;  
  unsigned char *tdsval[1];  
}; 
typedef struct sqltdss sqltdss; 
static struct sqltdss sqltds = 
{ 
  1, 
  0, 
}; 
 
/* File name & Package Name */ 
struct sqlcxp 
{ 
  unsigned short fillen; 
           char  filnam[12]; 
}; 
static struct sqlcxp sqlfpn = 
{ 
    11, 
    "testproc.pc" 
}; 
 
 
static unsigned long sqlctx = 163299; 
 
 
static struct sqlexd { 
   unsigned int   sqlvsn; 
   unsigned int   arrsiz; 
   unsigned int   iters; 
   unsigned int   offset; 
   unsigned short selerr; 
   unsigned short sqlety; 
   unsigned int   occurs; 
            short *cud; 
   unsigned char  *sqlest; 
            char  *stmt; 
   sqladts *sqladtp; 
   sqltdss *sqltdsp; 
            void  **sqphsv; 
   unsigned int   *sqphsl; 
            int   *sqphss; 
            void  **sqpind; 
            int   *sqpins; 
   unsigned int   *sqparm; 
   unsigned int   **sqparc; 
   unsigned short  *sqpadto; 
   unsigned short  *sqptdso; 
            void  *sqhstv[1]; 
   unsigned int   sqhstl[1]; 
            int   sqhsts[1]; 
            void  *sqindv[1]; 
            int   sqinds[1]; 
   unsigned int   sqharm[1]; 
   unsigned int   *sqharc[1]; 
   unsigned short  sqadto[1]; 
   unsigned short  sqtdso[1]; 
} sqlstm = {10,1}; 
 
/* SQLLIB Prototypes */ 
extern sqlcxt (/*_ void **, unsigned long *, 
                   struct sqlexd *, struct sqlcxp * _*/); 
extern sqlcx2t(/*_ void **, unsigned long *, 
                   struct sqlexd *, struct sqlcxp * _*/); 
extern sqlbuft(/*_ void **, char * _*/); 
extern sqlgs2t(/*_ void **, char * _*/); 
extern sqlorat(/*_ void **, unsigned long *, void * _*/); 
 
/* Forms Interface */ 
static int IAPSUCC = 0; 
static int IAPFAIL = 1403; 
static int IAPFTL  = 535; 
extern void sqliem(/*_ char *, int * _*/); 
 
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR; 
typedef struct { unsigned short len; unsigned char arr[1]; } varchar; 
 
/* CUD (Compilation Unit Data) Array */ 
static short sqlcud0[] = 
{10,4130,0,0,0, 
}; 
 
 
#include "stdio.h" 
#include "sqlda.h" 
#include "sqlca.h" 
 
/* EXEC SQL INCLUDE sqlda; 
 */  
/* 
 * $Header: sqlda.h 31-jul-99.19:34:41 apopat Exp $ sqlda.h  
 */ 
 
/*************************************************************** 
*      The SQLDA descriptor definition                         * 
*--------------------------------------------------------------* 
*      VAX/3B Version                                          * 
*                                                              * 
*  Copyright (c) 1987, 1997, 1998, 1999 by Oracle Corporation                    * 
***************************************************************/ 
 
 
/* NOTES 
  ************************************************************** 
  ***                                                        *** 
  *** This file is SOSD.  Porters must change the data types *** 
  *** appropriately on their platform.  See notes/pcport.doc *** 
  *** for more information.                                  *** 
  ***                                                        *** 
  ************************************************************** 
*/ 
 
/*  MODIFIED 
    apopat     07/31/99 -  [707588] TAB to blanks for OCCS 
    lvbcheng   10/27/98 -  change long to int for sqlda 
    lvbcheng   08/15/97 -  Move sqlda protos to sqlcpr.h 
    lvbcheng   06/25/97 -  Move sqlda protos to this file 
    jbasu      01/29/95 -  correct typo 
    jbasu      01/27/95 -  correct comment - ub2->sb2 
    jbasu      12/12/94 - Bug 217878: note this is an SOSD file 
    Morse      12/01/87 - undef L and S for v6 include files 
    Richey     07/13/87 - change int defs to long  
    Clare      09/13/84 - Port: Ch types to match SQLLIB structs 
    Clare      10/02/86 - Add ifndef SQLDA 
*/ 
 
#ifndef SQLDA_ 
#define SQLDA_ 1 
  
#ifdef T 
# undef T 
#endif 
#ifdef F 
# undef F 
#endif 
 
#ifdef S 
# undef S 
#endif 
#ifdef L 
# undef L 
#endif 
  
struct SQLDA { 
  /* ub4    */ int        N; /* Descriptor size in number of entries        */ 
  /* text** */ char     **V; /* Ptr to Arr of addresses of main variables   */ 
  /* ub4*   */ int       *L; /* Ptr to Arr of lengths of buffers            */ 
  /* sb2*   */ short     *T; /* Ptr to Arr of types of buffers              */ 
  /* sb2**  */ short    **I; /* Ptr to Arr of addresses of indicator vars   */ 
  /* sb4    */ int        F; /* Number of variables found by DESCRIBE       */ 
  /* text** */ char     **S; /* Ptr to Arr of variable name pointers        */ 
  /* ub2*   */ short     *M; /* Ptr to Arr of max lengths of var. names     */ 
  /* ub2*   */ short     *C; /* Ptr to Arr of current lengths of var. names */ 
  /* text** */ char     **X; /* Ptr to Arr of ind. var. name pointers       */ 
  /* ub2*   */ short     *Y; /* Ptr to Arr of max lengths of ind. var. names */ 
  /* ub2*   */ short     *Z; /* Ptr to Arr of cur lengths of ind. var. names */ 
  }; 
  
typedef struct SQLDA SQLDA; 
  
#endif 
 
/* ----------------- */ 
/* defines for sqlda */ 
/* ----------------- */ 
 
#define SQLSQLDAAlloc(arg1, arg2, arg3, arg4) sqlaldt(arg1, arg2, arg3, arg4)  
 
#define SQLSQLDAFree(arg1, arg2) sqlclut(arg1, arg2)  
 
 
 
/* EXEC SQL INCLUDE sqlca; 
 */  
/* 
 * $Header: sqlca.h,v 1.3 1994/12/12 19:27:27 jbasu Exp $ sqlca.h  
 */ 
 
/* Copyright (c) 1985,1986, 1998 by Oracle Corporation. */ 
  
/* 
NAME 
  SQLCA : SQL Communications Area. 
FUNCTION 
  Contains no code. Oracle fills in the SQLCA with status info 
  during the execution of a SQL stmt. 
NOTES 
  ************************************************************** 
  ***                                                        *** 
  *** This file is SOSD.  Porters must change the data types *** 
  *** appropriately on their platform.  See notes/pcport.doc *** 
  *** for more information.                                  *** 
  ***                                                        *** 
  ************************************************************** 
 
  If the symbol SQLCA_STORAGE_CLASS is defined, then the SQLCA 
  will be defined to have this storage class. For example: 
  
    #define SQLCA_STORAGE_CLASS extern 
  
  will define the SQLCA as an extern. 
  
  If the symbol SQLCA_INIT is defined, then the SQLCA will be 
  statically initialized. Although this is not necessary in order 
  to use the SQLCA, it is a good pgming practice not to have 
  unitialized variables. However, some C compilers/OS's don't 
  allow automatic variables to be init'd in this manner. Therefore, 
  if you are INCLUDE'ing the SQLCA in a place where it would be 
  an automatic AND your C compiler/OS doesn't allow this style 
  of initialization, then SQLCA_INIT should be left undefined -- 
  all others can define SQLCA_INIT if they wish. 
 
  If the symbol SQLCA_NONE is defined, then the SQLCA variable will 
  not be defined at all.  The symbol SQLCA_NONE should not be defined 
  in source modules that have embedded SQL.  However, source modules 
  that have no embedded SQL, but need to manipulate a sqlca struct 
  passed in as a parameter, can set the SQLCA_NONE symbol to avoid 
  creation of an extraneous sqlca variable. 
  
MODIFIED 
    lvbcheng   07/31/98 -  long to int 
    jbasu      12/12/94 -  Bug 217878: note this is an SOSD file 
    losborne   08/11/92 -  No sqlca var if SQLCA_NONE macro set  
  Clare      12/06/84 - Ch SQLCA to not be an extern. 
  Clare      10/21/85 - Add initialization. 
  Bradbury   01/05/86 - Only initialize when SQLCA_INIT set 
  Clare      06/12/86 - Add SQLCA_STORAGE_CLASS option. 
*/ 
  
#ifndef SQLCA 
#define SQLCA 1 
  
struct   sqlca 
         { 
         /* ub1 */ char    sqlcaid[8]; 
         /* b4  */ int     sqlabc; 
         /* b4  */ int     sqlcode; 
         struct 
           { 
           /* ub2 */ unsigned short sqlerrml; 
           /* ub1 */ char           sqlerrmc[70]; 
           } sqlerrm; 
         /* ub1 */ char    sqlerrp[8]; 
         /* b4  */ int     sqlerrd[6]; 
         /* ub1 */ char    sqlwarn[8]; 
         /* ub1 */ char    sqlext[8]; 
         }; 
 
#ifndef SQLCA_NONE  
#ifdef   SQLCA_STORAGE_CLASS 
SQLCA_STORAGE_CLASS struct sqlca sqlca 
#else 
         struct sqlca sqlca 
#endif 
  
#ifdef  SQLCA_INIT 
         = { 
         {'S', 'Q', 'L', 'C', 'A', ' ', ' ', ' '}, 
         sizeof(struct sqlca), 
         0, 
         { 0, {0}}, 
         {'N', 'O', 'T', ' ', 'S', 'E', 'T', ' '}, 
         {0, 0, 0, 0, 0, 0}, 
         {0, 0, 0, 0, 0, 0, 0, 0}, 
         {0, 0, 0, 0, 0, 0, 0, 0} 
         } 
#endif 
         ; 
#endif 
  
#endif 
  
/* end SQLCA */ 
/*  */  
/* 
 * $Header: sqlda.h 31-jul-99.19:34:41 apopat Exp $ sqlda.h  
 */ 
 
/*************************************************************** 
*      The SQLDA descriptor definition                         * 
*--------------------------------------------------------------* 
*      VAX/3B Version                                          * 
*                                                              * 
*  Copyright (c) 1987, 1997, 1998, 1999 by Oracle Corporation                    * 
***************************************************************/ 
 
 
/* NOTES 
  ************************************************************** 
  ***                                                        *** 
  *** This file is SOSD.  Porters must change the data types *** 
  *** appropriately on their platform.  See notes/pcport.doc *** 
  *** for more information.                                  *** 
  ***                                                        *** 
  ************************************************************** 
*/ 
 
/*  MODIFIED 
    apopat     07/31/99 -  [707588] TAB to blanks for OCCS 
    lvbcheng   10/27/98 -  change long to int for sqlda 
    lvbcheng   08/15/97 -  Move sqlda protos to sqlcpr.h 
    lvbcheng   06/25/97 -  Move sqlda protos to this file 
    jbasu      01/29/95 -  correct typo 
    jbasu      01/27/95 -  correct comment - ub2->sb2 
    jbasu      12/12/94 - Bug 217878: note this is an SOSD file 
    Morse      12/01/87 - undef L and S for v6 include files 
    Richey     07/13/87 - change int defs to long  
    Clare      09/13/84 - Port: Ch types to match SQLLIB structs 
    Clare      10/02/86 - Add ifndef SQLDA 
*/ 
 
#ifndef SQLDA_ 
#define SQLDA_ 1 
  
#ifdef T 
# undef T 
#endif 
#ifdef F 
# undef F 
#endif 
 
#ifdef S 
# undef S 
#endif 
#ifdef L 
# undef L 
#endif 
  
struct SQLDA { 
  /* ub4    */ int        N; /* Descriptor size in number of entries        */ 
  /* text** */ char     **V; /* Ptr to Arr of addresses of main variables   */ 
  /* ub4*   */ int       *L; /* Ptr to Arr of lengths of buffers            */ 
  /* sb2*   */ short     *T; /* Ptr to Arr of types of buffers              */ 
  /* sb2**  */ short    **I; /* Ptr to Arr of addresses of indicator vars   */ 
  /* sb4    */ int        F; /* Number of variables found by DESCRIBE       */ 
  /* text** */ char     **S; /* Ptr to Arr of variable name pointers        */ 
  /* ub2*   */ short     *M; /* Ptr to Arr of max lengths of var. names     */ 
  /* ub2*   */ short     *C; /* Ptr to Arr of current lengths of var. names */ 
  /* text** */ char     **X; /* Ptr to Arr of ind. var. name pointers       */ 
  /* ub2*   */ short     *Y; /* Ptr to Arr of max lengths of ind. var. names */ 
  /* ub2*   */ short     *Z; /* Ptr to Arr of cur lengths of ind. var. names */ 
  }; 
  
typedef struct SQLDA SQLDA; 
  
#endif 
 
/* ----------------- */ 
/* defines for sqlda */ 
/* ----------------- */ 
 
#define SQLSQLDAAlloc(arg1, arg2, arg3, arg4) sqlaldt(arg1, arg2, arg3, arg4)  
 
#define SQLSQLDAFree(arg1, arg2) sqlclut(arg1, arg2)  
 
 
 
/*  */  
/* 
 * $Header: sqlca.h,v 1.3 1994/12/12 19:27:27 jbasu Exp $ sqlca.h  
 */ 
 
/* Copyright (c) 1985,1986, 1998 by Oracle Corporation. */ 
  
/* 
NAME 
  SQLCA : SQL Communications Area. 
FUNCTION 
  Contains no code. Oracle fills in the SQLCA with status info 
  during the execution of a SQL stmt. 
NOTES 
  ************************************************************** 
  ***                                                        *** 
  *** This file is SOSD.  Porters must change the data types *** 
  *** appropriately on their platform.  See notes/pcport.doc *** 
  *** for more information.                                  *** 
  ***                                                        *** 
  ************************************************************** 
 
  If the symbol SQLCA_STORAGE_CLASS is defined, then the SQLCA 
  will be defined to have this storage class. For example: 
  
    #define SQLCA_STORAGE_CLASS extern 
  
  will define the SQLCA as an extern. 
  
  If the symbol SQLCA_INIT is defined, then the SQLCA will be 
  statically initialized. Although this is not necessary in order 
  to use the SQLCA, it is a good pgming practice not to have 
  unitialized variables. However, some C compilers/OS's don't 
  allow automatic variables to be init'd in this manner. Therefore, 
  if you are INCLUDE'ing the SQLCA in a place where it would be 
  an automatic AND your C compiler/OS doesn't allow this style 
  of initialization, then SQLCA_INIT should be left undefined -- 
  all others can define SQLCA_INIT if they wish. 
 
  If the symbol SQLCA_NONE is defined, then the SQLCA variable will 
  not be defined at all.  The symbol SQLCA_NONE should not be defined 
  in source modules that have embedded SQL.  However, source modules 
  that have no embedded SQL, but need to manipulate a sqlca struct 
  passed in as a parameter, can set the SQLCA_NONE symbol to avoid 
  creation of an extraneous sqlca variable. 
  
MODIFIED 
    lvbcheng   07/31/98 -  long to int 
    jbasu      12/12/94 -  Bug 217878: note this is an SOSD file 
    losborne   08/11/92 -  No sqlca var if SQLCA_NONE macro set  
  Clare      12/06/84 - Ch SQLCA to not be an extern. 
  Clare      10/21/85 - Add initialization. 
  Bradbury   01/05/86 - Only initialize when SQLCA_INIT set 
  Clare      06/12/86 - Add SQLCA_STORAGE_CLASS option. 
*/ 
  
#ifndef SQLCA 
#define SQLCA 1 
  
struct   sqlca 
         { 
         /* ub1 */ char    sqlcaid[8]; 
         /* b4  */ int     sqlabc; 
         /* b4  */ int     sqlcode; 
         struct 
           { 
           /* ub2 */ unsigned short sqlerrml; 
           /* ub1 */ char           sqlerrmc[70]; 
           } sqlerrm; 
         /* ub1 */ char    sqlerrp[8]; 
         /* b4  */ int     sqlerrd[6]; 
         /* ub1 */ char    sqlwarn[8]; 
         /* ub1 */ char    sqlext[8]; 
         }; 
 
#ifndef SQLCA_NONE  
#ifdef   SQLCA_STORAGE_CLASS 
SQLCA_STORAGE_CLASS struct sqlca sqlca 
#else 
         struct sqlca sqlca 
#endif 
  
#ifdef  SQLCA_INIT 
         = { 
         {'S', 'Q', 'L', 'C', 'A', ' ', ' ', ' '}, 
         sizeof(struct sqlca), 
         0, 
         { 0, {0}}, 
         {'N', 'O', 'T', ' ', 'S', 'E', 'T', ' '}, 
         {0, 0, 0, 0, 0, 0}, 
         {0, 0, 0, 0, 0, 0, 0, 0}, 
         {0, 0, 0, 0, 0, 0, 0, 0} 
         } 
#endif 
         ; 
#endif 
  
#endif 
  
/* end SQLCA */ 
 
 
main() 
{ 
  exit(0); 
 
}