www.pudn.com > oci_unix.zip > oracle.h


#ifndef _ORACLE_H
#define _ORACLE_H

#include "oci.h"

#define DWORD dword
#define HRESULT sword
#define BOOL boolean
#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
#define FAILED(Status) ((HRESULT)(Status)<0)

#define SQL_TYPE_STR		'1'
#define SQL_TYPE_INT		'2'
#define SQL_TYPE_FLT		'3'
#define SQL_TYPE_DBL		'4'
#define SQL_TYPE_DATE		'5'

typedef struct
{
  OCIEnv* m_hpEnv;
  OCIServer* m_hpServer;
  OCIError* m_hpErr;
  OCISvcCtx* m_hpContext;
  OCISession* m_hpSession;
  char m_szError[512];
  char **m_pOracleTypes;
  int m_auto_commit;
  //OdbContext *m_po;
}DB_INFO;

typedef struct
{
  char name[50];
  dvoid* pBuffer;
  ub2 wType;
  ub2 wSize;
  ub2 wLen;
  sb2 nInd;
  char m_type;
}BindField;

typedef struct
{
  int FieldCount, RecCount;
  char **FieldValues;
  OCIStmt *m_hpSelect;
  DB_INFO *pdb;
  BindField **m_BindFields;
}DB_QUERY_INFO;

int db_init(DB_INFO *pdb_info);
int db_exit(DB_INFO *pdb_info);
int db_set_auto_commit(DB_INFO *, int if_auto);

int db_connect(DB_INFO *pdb_info, char *server, char *user, char *pass);
int db_close(DB_INFO *pdb_info);
int db_exec(DB_INFO *pdb_info, char *stmt);
char *db_get_error_string(DB_INFO *pdb_info);
int db_begin_trans(DB_INFO *pdb_info);
int db_roll_back(DB_INFO *pdb_info);
int db_commit(DB_INFO *pdb_info);
void CheckErr(DB_INFO *pdb, HRESULT status );

int db_query_init( DB_QUERY_INFO *, DB_INFO *pdb);
void db_query_close( DB_QUERY_INFO *pquery);
int db_query_select(DB_QUERY_INFO *pquery, char *stmt);
int db_query_fetch(DB_QUERY_INFO *pquery);
BOOL db_query_is_eos(DB_QUERY_INFO *pquery);

/* bind long or varchar2 string */
int db_exec_bind_long(DB_INFO *pdb, char *sql_stmt, int count, char **long_values, int *long_sizes);

char *get_field_value(DB_QUERY_INFO *, int);
char *get_field_value2(DB_QUERY_INFO *, int, char *);
char *get_field_value_by_name(DB_QUERY_INFO *, char *);
char *get_field_value_by_name2(DB_QUERY_INFO *, char *fname, char *buf);

char *db_get_error_string(DB_INFO *);

#endif