/*
engn/perldb2/dbdimp.h, engn_perldb2, db2_v6, 1.3 99/01/12 13:48:09
Copyright (c) 1995,1996,1997,1998,1999 International Business Machines Corp.
*/
/* these are (almost) random values ! */
#define MAX_COLS 99
#define MAX_COL_NAME_LEN 128
#define MAX_BIND_VARS 99
typedef struct imp_fbh_st imp_fbh_t;
struct imp_drh_st {
dbih_drc_t com; /* MUST be first element in structure */
SQLHENV henv;
int connects;
};
/* Define dbh implementor data structure */
struct imp_dbh_st {
dbih_dbc_t com; /* MUST be first element in structure */
SQLHENV henv;
SQLHDBC hdbc;
};
/* Define sth implementor data structure */
struct imp_sth_st {
dbih_stc_t com; /* MUST be first element in structure */
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT phstmt;
/* Input Details */
SQLCHAR *statement; /* sql (see sth_scan) */
HV *bind_names;
/* Output Details */
SQLINTEGER done_desc; /* have we described this sth yet ? */
imp_fbh_t *fbh; /* array of imp_fbh_t structs */
SQLCHAR *fbh_cbuf; /* memory for all field names */
SQLINTEGER long_buflen; /* length for long/longraw (if >0) */
SQLCHAR long_trunc_ok; /* is truncating a long an error */
SQLINTEGER RowCount; /* Rows affected by insert, update, */
/* delete (unreliable for SELECT) */
bool has_inouts;
};
#define IMP_STH_EXECUTING 0x0001
struct imp_fbh_st { /* field buffer EXPERIMENTAL */
imp_sth_t *imp_sth; /* 'parent' statement */
/* description of the field */
SQLINTEGER dbsize;
short dbtype;
SQLCHAR *cbuf; /* ptr to name of select-list item */
SQLINTEGER cbufl; /* length of select-list item name */
SQLINTEGER dsize; /* max display size if field is a SQLCHAR */
unsigned long prec;
short scale;
short nullok;
/* Our storage space for the field data as it's fetched */
short ftype; /* external datatype we wish to get */
short indp; /* null/trunc indicator variable */
SQLCHAR *buf; /* data buffer (poSQLINTEGERs to sv data) */
SQLINTEGER bufl; /* length of data buffer */
SQLINTEGER rlen; /* length of returned data */
short rcode; /* field level error status */
SV *sv;
};
typedef struct phs_st phs_t; /* scalar placeholder */
struct phs_st { /* scalar placeholder EXPERIMENTAL */
SV *sv; /* the scalar holding the value */
short ftype; /* external OCI field type */
SQLINTEGER indp; /* null indicator or length indicator */
bool is_inout;
};
SQLCHAR sql_state[6];
#define dbd_init db2_init
#define dbd_db_login db2_db_login
#define dbd_db_do db2_db_do
#define dbd_db_commit db2_db_commit
#define dbd_db_rollback db2_db_rollback
#define dbd_db_disconnect db2_db_disconnect
#define dbd_db_destroy db2_db_destroy
#define dbd_db_STORE_attrib db2_db_STORE_attrib
#define dbd_db_FETCH_attrib db2_db_FETCH_attrib
#define dbd_st_prepare db2_st_prepare
#define dbd_st_rows db2_st_rows
#define dbd_st_execute db2_st_execute
#define dbd_st_fetch db2_st_fetch
#define dbd_st_finish db2_st_finish
#define dbd_st_destroy db2_st_destroy
#define dbd_st_blob_read db2_st_blob_read
#define dbd_st_STORE_attrib db2_st_STORE_attrib
#define dbd_st_FETCH_attrib db2_st_FETCH_attrib
#define dbd_describe db2_describe
#define dbd_bind_ph db2_bind_ph
void do_error _((SV *h,SQLINTEGER rc, SQLHENV henv, SQLHDBC hconn,
SQLHSTMT hstmt, char *what));
void fbh_dump _((imp_fbh_t *fbh, int i));
void dbd_init _((dbistate_t *dbistate));
void dbd_preparse _((imp_sth_t *imp_sth, char *statement));
int dbd_describe _((SV *h, imp_sth_t *imp_sth));
/* end */