63d98e39cd
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
400 lines
10 KiB
C
400 lines
10 KiB
C
// *****************************************************
|
|
// Copyright (c) 2001-2011 iAnywhere Solutions, Inc.
|
|
// Portions copyright (c) 1988-2011 Sybase, Inc.
|
|
// All rights reserved. All unpublished rights reserved.
|
|
// *****************************************************
|
|
|
|
#ifndef _SQLCA_H_INCLUDED
|
|
#define _SQLCA_H_INCLUDED
|
|
#define II_SQLCA
|
|
|
|
#include "sqlos.h"
|
|
#ifndef UNDER_PALM_OS_GARNET
|
|
#include <stddef.h>
|
|
#endif
|
|
|
|
/******************************************************************/
|
|
/* Define _SQL32 or _SQL64 based on target operating-system. */
|
|
/******************************************************************/
|
|
|
|
#if defined( _SQL_OS_UNIX64 )
|
|
#define _SQL64
|
|
#else
|
|
#define _SQL32
|
|
#endif
|
|
|
|
|
|
/******************************************************************/
|
|
/* Define _sqlfar macro (definition left for compatibility reasons */
|
|
/******************************************************************/
|
|
|
|
#define _sqlfar
|
|
#define _sqlfar_isfar 0
|
|
|
|
/*********************************************/
|
|
/* Version check for sqlpp-to-dblib interface*/
|
|
/*********************************************/
|
|
|
|
typedef unsigned short a_sqlpp_version_number;
|
|
|
|
#define SQLPP_DBLIB_VERSION_INITIAL 1
|
|
#define SQLPP_DBLIB_VERSION_WSQL32 2
|
|
#define SQLPP_DBLIB_VERSION_REENTRANCY 3
|
|
#define SQLPP_DBLIB_VERSION_WSQL40 4
|
|
#define SQLPP_DBLIB_VERSION_SA50 4
|
|
#define SQLPP_DBLIB_VERSION_ASA6 6
|
|
#define SQLPP_DBLIB_VERSION_ASA7 7
|
|
#define SQLPP_DBLIB_VERSION_ASA8 8
|
|
#define SQLPP_DBLIB_VERSION_ASA9 9
|
|
#define SQLPP_DBLIB_VERSION_SA10 10
|
|
#define SQLPP_DBLIB_VERSION_SA11 11
|
|
#define SQLPP_DBLIB_VERSION_SA12 12
|
|
#define SQLPP_DBLIB_VERSION 12
|
|
|
|
#if defined( _SQL_SQLPP_VERSION_MAJOR ) \
|
|
&& _SQL_SQLPP_VERSION_MAJOR != SQLPP_DBLIB_VERSION
|
|
#error Incorrect version of SQLPP used for this header file
|
|
#endif
|
|
|
|
/******************************************************************/
|
|
/* Define structure packing macro based on environment */
|
|
/******************************************************************/
|
|
|
|
#if ( defined( _SQL_OS_WINNT ) && !defined( UNDER_CE ) && !defined( _WIN64 ) ) \
|
|
|| defined( _SQL_OS_NETWARE )
|
|
#define _SQL_PACK_STRUCTURES 1
|
|
#endif
|
|
|
|
/******************************************************************/
|
|
/* Structure definitions */
|
|
/******************************************************************/
|
|
|
|
#if defined( _SQL_PACK_STRUCTURES )
|
|
#if defined( _MSC_VER ) && _MSC_VER > 800
|
|
#pragma warning(push)
|
|
#pragma warning(disable:4103)
|
|
#endif
|
|
#include "pshpk1.h"
|
|
#endif
|
|
|
|
typedef short a_sql_len;
|
|
typedef unsigned short a_sql_ulen;
|
|
|
|
typedef a_sql_int32 an_sql_code;
|
|
typedef char an_sql_state[6];
|
|
|
|
struct sqlwarn{
|
|
unsigned char sqlwarn0;
|
|
unsigned char sqlwarn1;
|
|
unsigned char sqlwarn2;
|
|
unsigned char sqlwarn3;
|
|
unsigned char sqlwarn4;
|
|
unsigned char sqlwarn5;
|
|
unsigned char sqlwarn6;
|
|
unsigned char sqlwarn7;
|
|
unsigned char sqlwarn8;
|
|
unsigned char sqlwarn9;
|
|
};
|
|
|
|
#if defined( _SQL_PACK_STRUCTURES )
|
|
#include "poppk.h"
|
|
/* The SQLCA should be 4-byte aligned */
|
|
#include "pshpk4.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
typedef struct _sqlca{
|
|
#else
|
|
typedef struct sqlca{
|
|
#endif
|
|
unsigned char sqlcaid[8];
|
|
a_sql_int32 sqlcabc;
|
|
an_sql_code sqlcode;
|
|
short sqlerrml;
|
|
unsigned char sqlerrmc[70];
|
|
unsigned char sqlerrp[8];
|
|
a_sql_int32 sqlerrd[6];
|
|
struct sqlwarn sqlwarn;
|
|
an_sql_state sqlstate;
|
|
} SQLCA;
|
|
|
|
#ifndef SQLCAPTR
|
|
#define SQLCAPTR sqlcaptr
|
|
#endif
|
|
|
|
#ifndef SQLCODE
|
|
#define SQLCODE SQLCAPTR->sqlcode
|
|
#define SQLWARN0 SQLCAPTR->sqlwarn.sqlwarn0
|
|
#define SQLWARN1 SQLCAPTR->sqlwarn.sqlwarn1
|
|
#define SQLWARN2 SQLCAPTR->sqlwarn.sqlwarn2
|
|
#define SQLWARN3 SQLCAPTR->sqlwarn.sqlwarn3
|
|
#define SQLWARN4 SQLCAPTR->sqlwarn.sqlwarn4
|
|
#define SQLWARN5 SQLCAPTR->sqlwarn.sqlwarn5
|
|
#define SQLWARN6 SQLCAPTR->sqlwarn.sqlwarn6
|
|
#define SQLWARN7 SQLCAPTR->sqlwarn.sqlwarn7
|
|
#define SQLWARN8 SQLCAPTR->sqlwarn.sqlwarn8
|
|
#define SQLWARN9 SQLCAPTR->sqlwarn.sqlwarn9
|
|
#define SQLSTATE SQLCAPTR->sqlstate
|
|
|
|
#define SQLIOCOUNT_F sqlerrd[1]
|
|
#define SQLCOUNT_F sqlerrd[2]
|
|
#define SQLIOESTIMATE_F sqlerrd[3]
|
|
|
|
#define SQLIOCOUNT SQLCAPTR->SQLIOCOUNT_F
|
|
#define SQLCOUNT SQLCAPTR->SQLCOUNT_F
|
|
#define SQLIOESTIMATE SQLCAPTR->SQLIOESTIMATE_F
|
|
#endif
|
|
|
|
#if defined( _SQL_PACK_STRUCTURES )
|
|
#include "poppk.h"
|
|
/* Everything else must be single-byte aligned */
|
|
#include "pshpk1.h"
|
|
#endif
|
|
|
|
#define DECL_NCHAR char
|
|
|
|
#define DECL_VARCHAR( size ) \
|
|
struct { a_sql_ulen len; \
|
|
unsigned char array[size+1]; \
|
|
}
|
|
|
|
#define DECL_NVARCHAR( size ) \
|
|
struct { a_sql_ulen len; \
|
|
unsigned char array[size+1]; \
|
|
}
|
|
|
|
#define DECL_BINARY( size ) \
|
|
struct { a_sql_ulen len; \
|
|
unsigned char array[size]; \
|
|
}
|
|
|
|
#define DECL_LONGVARCHAR( size ) \
|
|
struct { a_sql_uint32 array_len; \
|
|
a_sql_uint32 stored_len; \
|
|
a_sql_uint32 untrunc_len; \
|
|
char array[size+1]; \
|
|
}
|
|
|
|
#define DECL_LONGNVARCHAR( size ) \
|
|
struct { a_sql_uint32 array_len; \
|
|
a_sql_uint32 stored_len; \
|
|
a_sql_uint32 untrunc_len; \
|
|
char array[size+1]; \
|
|
}
|
|
|
|
#define DECL_LONGBINARY( size ) \
|
|
struct { a_sql_uint32 array_len; \
|
|
a_sql_uint32 stored_len; \
|
|
a_sql_uint32 untrunc_len; \
|
|
char array[size]; \
|
|
}
|
|
|
|
#define DECL_DECIMAL( prec, scale ) \
|
|
struct { char array[ ((prec)/2) + 1 ]; \
|
|
}
|
|
|
|
#define DECL_FIXCHAR( size ) \
|
|
struct { char array[ size ]; \
|
|
}
|
|
|
|
#define DECL_NFIXCHAR( size ) \
|
|
struct { char array[ size ]; \
|
|
}
|
|
|
|
#define DECL_DATETIME \
|
|
struct sqldatetime
|
|
|
|
#define DECL_BIT \
|
|
unsigned char
|
|
|
|
#if defined(__WATCOMC__) || defined(_MSC_VER) || defined(__BORLANDC__)
|
|
|
|
#define DECL_BIGINT __int64
|
|
#define DECL_UNSIGNED_BIGINT unsigned __int64
|
|
|
|
#elif defined(_SQL64)
|
|
|
|
#define DECL_BIGINT long
|
|
#define DECL_UNSIGNED_BIGINT unsigned long
|
|
|
|
#else
|
|
|
|
#define DECL_BIGINT long long
|
|
#define DECL_UNSIGNED_BIGINT unsigned long long
|
|
|
|
#endif
|
|
|
|
typedef struct VARCHAR {
|
|
a_sql_ulen len;
|
|
char array[1];
|
|
} VARCHAR;
|
|
|
|
typedef struct NVARCHAR {
|
|
a_sql_ulen len;
|
|
char array[1];
|
|
} NVARCHAR;
|
|
|
|
typedef struct BINARY {
|
|
a_sql_ulen len;
|
|
char array[1];
|
|
} BINARY;
|
|
|
|
typedef struct LONGVARCHAR {
|
|
a_sql_uint32 array_len; /* number of allocated bytes in array */
|
|
a_sql_uint32 stored_len; /* number of bytes stored in array
|
|
* (never larger than array_len) */
|
|
a_sql_uint32 untrunc_len;/* number of bytes in untruncated expression
|
|
* (may be larger than array_len) */
|
|
char array[1]; /* the data */
|
|
} LONGVARCHAR, LONGNVARCHAR, LONGBINARY;
|
|
|
|
/* used by LONGVARCHARSIZE and LONGBINARYSIZE */
|
|
#define _SQL_OFFSETOF(__typ,__id) ((size_t)&(((__typ*)0)->__id))
|
|
|
|
/* number of bytes to allocate for LONGVARCHAR or LONGBINARY structure
|
|
* with n bytes in array */
|
|
#define LONGVARCHARSIZE( n ) ( _SQL_OFFSETOF( LONGVARCHAR, array[0] ) + n )
|
|
#define LONGNVARCHARSIZE( n ) LONGVARCHARSIZE( n )
|
|
#define LONGBINARYSIZE( n ) LONGVARCHARSIZE( n )
|
|
|
|
typedef struct TYPE_DECIMAL {
|
|
char array[1];
|
|
} TYPE_DECIMAL;
|
|
|
|
typedef short int a_sql_statement_number;
|
|
|
|
/* Supported values for port_type in a_server_address
|
|
(used by db_locate_servers) */
|
|
#define PORT_TYPE_TCP 6
|
|
|
|
typedef struct a_server_address {
|
|
a_sql_uint32 port_type; /* Only returns PORT_TYPE_TCP */
|
|
a_sql_uint32 port_num; /* TCP Port number */
|
|
char *name; /* Name of the database engine */
|
|
char *address; /* IP address */
|
|
char *dbname; /* Database name */
|
|
} a_server_address;
|
|
|
|
/* Supported flags for db_lookup_servers_ex */
|
|
#define DB_LOOKUP_FLAG_NUMERIC 0x0001
|
|
#define DB_LOOKUP_FLAG_DATABASES 0x0002
|
|
#define DB_LOOKUP_FLAG_ADDRESS_INCLUDES_PORT 0x0004
|
|
|
|
/* Supported flags for fill_sqlda_ex */
|
|
#define FILL_SQLDA_FLAG_RETURN_DT_LONG 0x0001
|
|
|
|
struct a_dblib_info;
|
|
|
|
struct sqlda;
|
|
|
|
#include "sqlcallback.h"
|
|
|
|
#if defined( _SQL_PACK_STRUCTURES )
|
|
#include "poppk.h"
|
|
#if defined( _MSC_VER ) && _MSC_VER > 800
|
|
#pragma warning(pop)
|
|
#endif
|
|
#endif
|
|
|
|
/******************************************************************/
|
|
/* Define __SMALLDATA__ based on other compiler macros */
|
|
/******************************************************************/
|
|
|
|
#ifndef __SMALLDATA__
|
|
#ifdef M_I86SM
|
|
#define __SMALLDATA__
|
|
#endif
|
|
#ifdef M_I86MM
|
|
#define __SMALLDATA__
|
|
#endif
|
|
#ifdef __TURBOC__
|
|
#if defined( __TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
|
|
#define __SMALLDATA__
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/******************************************************************/
|
|
/* PLATFORM specific definitions */
|
|
/******************************************************************/
|
|
|
|
typedef enum {
|
|
SQLDA_CLEAR,
|
|
SQLDA_NOCLEAR,
|
|
SQLDA_NOEXEC
|
|
} a_descriptor_behaviour;
|
|
|
|
typedef enum {
|
|
SQLDA_TYPE,
|
|
SQLDA_LENGTH,
|
|
SQLDA_RETURNED_LENGTH,
|
|
SQLDA_PRECISION,
|
|
SQLDA_SCALE,
|
|
SQLDA_NULLABLE,
|
|
SQLDA_INDICATOR
|
|
} a_descriptor_field;
|
|
|
|
typedef enum {
|
|
DB_PROP_SERVER_ADDRESS,
|
|
DB_PROP_DBLIB_VERSION,
|
|
DB_PROP_CLIENT_CHARSET
|
|
} a_db_property;
|
|
|
|
typedef enum {
|
|
DB_SET_PROP_CLIENT_API
|
|
} a_db_set_property;
|
|
|
|
/* Standard functions emitted by sqlpp require covers for some platforms */
|
|
#ifdef UNDER_PALM_OS_GARNET
|
|
#ifndef memcpy
|
|
#define memcpy MemMove
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef II_SQL_FUNCS
|
|
#define II_SQL_FUNCS
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* external sqlca data structure */
|
|
|
|
extern SQLCA sqlca;
|
|
extern SQLCA *sqlcaptr;
|
|
|
|
/* Macros for multiple sqlca management */
|
|
|
|
#define db_set_sqlca( sqlca ) sqlcaptr = sqlca
|
|
#define db_get_sqlca() sqlcaptr
|
|
|
|
|
|
/* Generate function pointers or function prototypes */
|
|
|
|
#ifndef UNDER_UL_SQLPP /* UltraLite uses its own sqlpp function headers*/
|
|
#define UNDER_ASA_SQLPP
|
|
#ifndef _NO_FUNC_INFO
|
|
#ifdef _USE_ESQLDLL
|
|
#define FUNC_INFO( scope, rettype, call, fname, parms ) \
|
|
extern rettype ( call * fname ) parms;
|
|
#include "sqlfuncs.h"
|
|
#undef FUNC_INFO
|
|
#else
|
|
#define FUNC_INFO( scope, rettype, call, fname, parms ) \
|
|
scope rettype call fname parms;
|
|
#include "sqlfuncs.h"
|
|
#undef FUNC_INFO
|
|
#endif //_USE_ESQLDLL
|
|
#endif //_NO_FUNC_INFO
|
|
#endif //UNDER_UL_SQLPP
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|