bmh/FlightSimulation/Plugins/UEDMPlugin/Source/ThirdParty/include/DPI.h

1463 lines
38 KiB
C

//-----------------------------------------------------------------------------
// File: DPI.h
//
// Contents: This is the the main include for DM API programing.
//
// Comments: preconditions: NONE
//
//-----------------------------------------------------------------------------
#ifndef _DPI_H
#define _DPI_H
/*
* DPIVER DPI version number (0x0101).
*/
#ifndef DPIVER
#define DPIVER 0x0101
#endif
#ifndef __DPITYPES
#include "DPItypes.h"
#endif
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
#if defined (_WINDOWS) || defined (WIN32)
#ifndef DllImport
#define DllImport __declspec( dllimport )
#endif
#ifndef DllExport
#define DllExport __declspec( dllexport )
#endif
#else
#define DllImport
#define DllExport
#endif
/* special length/indicator values */
#define DSQL_NULL_DATA (-1)
#define DSQL_DATA_AT_EXEC (-2)
#define DSQL_DEFAULT_PARAM (-5)
#define DSQL_COLUMN_IGNORE (-6)
/* return values from functions */
#define DSQL_SUCCESS 0
#define DSQL_SUCCESS_WITH_INFO 1
#define DSQL_NO_DATA 100
#define DSQL_ERROR (-1)
#define DSQL_INVALID_HANDLE (-2)
#define DSQL_STILL_EXECUTING 2
#define DSQL_NEED_DATA 99
#define DSQL_PARAM_DATA_AVAILABLE 101
/* defines for diagnostics fields */
/* diagnose head field identifier */
#define DSQL_DIAG_NUMBER (1)
#define DSQL_DIAG_DYNAMIC_FUNCTION_CODE (2)
#define DSQL_DIAG_ROW_COUNT (3)
#define DSQL_DIAG_PRINT_INFO (4)
#define DSQL_DIAG_EXPLAIN (5)
#define DSQL_DIAG_ROWID (6)
#define DSQL_DIAG_EXECID (7)
#define DSQL_DIAG_SERVER_STAT (8)
/* diagnose record field identifier*/
#define DSQL_DIAG_COLUMN_NUMBER (101)
#define DSQL_DIAG_MESSAGE_TEXT (102)
#define DSQL_DIAG_ERROR_CODE (103)
#define DSQL_DIAG_ROW_NUMBER (104)
//If dpi_row_count or diagnose cannot return exactly row count
#define DSQL_ROW_COUNT_UNKNOWN (-99)
/* test for SQL_SUCCESS or SQL_SUCCESS_WITH_INFO */
#define DSQL_SUCCEEDED(rc) (((rc)&(~1))==0)
/* flags for null-terminated string */
#define DSQL_NTS (-3)
#define DSQL_NTSL (-3L)
/* handle type identifiers */
#define DSQL_HANDLE_ENV 1
#define DSQL_HANDLE_DBC 2
#define DSQL_HANDLE_STMT 3
#define DSQL_HANDLE_DESC 4
#define DSQL_HANDLE_LOB_LOCATOR 5
#define DSQL_HANDLE_OBJECT 6
#define DSQL_HANDLE_OBJDESC 7
#define DSQL_HANDLE_BFILE 8
//DM C TYPE DEFINE
#define DSQL_C_TYPE_INVALID (-1000)
#define DSQL_C_NCHAR 0 //with NULL terminate
#define DSQL_C_SSHORT 1
#define DSQL_C_USHORT 2
#define DSQL_C_SLONG 3
#define DSQL_C_ULONG 4
#define DSQL_C_FLOAT 5
#define DSQL_C_DOUBLE 6
#define DSQL_C_BIT 7
#define DSQL_C_STINYINT 8
#define DSQL_C_UTINYINT 9
#define DSQL_C_SBIGINT 10
#define DSQL_C_UBIGINT 11
#define DSQL_C_BINARY 12
#define DSQL_C_DATE 13
#define DSQL_C_TIME 14
#define DSQL_C_TIMESTAMP 15
#define DSQL_C_NUMERIC 16
#define DSQL_C_INTERVAL_YEAR 17
#define DSQL_C_INTERVAL_MONTH 18
#define DSQL_C_INTERVAL_DAY 19
#define DSQL_C_INTERVAL_HOUR 20
#define DSQL_C_INTERVAL_MINUTE 21
#define DSQL_C_INTERVAL_SECOND 22
#define DSQL_C_INTERVAL_YEAR_TO_MONTH 23
#define DSQL_C_INTERVAL_DAY_TO_HOUR 24
#define DSQL_C_INTERVAL_DAY_TO_MINUTE 25
#define DSQL_C_INTERVAL_DAY_TO_SECOND 26
#define DSQL_C_INTERVAL_HOUR_TO_MINUTE 27
#define DSQL_C_INTERVAL_HOUR_TO_SECOND 28
#define DSQL_C_INTERVAL_MINUTE_TO_SECOND 29
#define DSQL_C_DEFAULT 30
#define DSQL_C_CLASS 31
#define DSQL_C_RECORD 32
#define DSQL_C_ARRAY 33
#define DSQL_C_SARRAY 34
#define DSQL_C_LOB_HANDLE 999
#define DSQL_C_RSET 1000
#define DSQL_C_WCHAR 1001
#define DSQL_C_BFILE 1002
#define DSQL_C_CHAR 1003 //without NULL terminate
#define DSQL_C_BOOLEAN DSQL_C_SLONG
#ifdef DM64
#define DSQL_C_BOOKMARK DSQL_C_UBIGINT
#else
#define DSQL_C_BOOKMARK DSQL_C_ULONG
#endif
#define DSQL_C_VARBOOKMARK DSQL_C_BINARY
#define DSQL_IS_CTYPE_INTERVAL(type) (DSQL_C_INTERVAL_YEAR <= (type) && (type) <= DSQL_C_INTERVAL_MINUTE_TO_SECOND)
#define DSQL_IS_CTYPE_INTERVAL_YM(type) (type == DSQL_C_INTERVAL_YEAR || type == DSQL_C_INTERVAL_MONTH || type == DSQL_C_INTERVAL_YEAR_TO_MONTH)
#define DSQL_IS_CTYPE_INTERVAL_DT(type) (DSQL_IS_CTYPE_INTERVAL(type) && !DSQL_IS_TYPE_INTERVAL_YM(type))
#define DSQL_IS_CTYPE_DATETIME(type) (DSQL_C_DATE <= type && type <= DSQL_C_TIMESTAMP)
//DM SERVER TYPE DEFINE
#define DSQL_CHAR 1 /* CHAR */
#define DSQL_VARCHAR 2 /* VARCHAR */
#define DSQL_BIT 3 /* BIT STRING */
#define DSQL_TINYINT 5 /* 1 byte INT */
#define DSQL_SMALLINT 6 /* SMALL INTEGER, 2 bytes */
#define DSQL_INT 7 /* INTEGER 4 bytes */
#define DSQL_BIGINT 8 /* INTEGER 8 bytes */
#define DSQL_DEC 9 /* DECIMAL */
#define DSQL_FLOAT 10 /* FLOAT, SINGLE */
#define DSQL_DOUBLE 11 /* DOUBLE */
#define DSQL_BLOB 12 /* BINARY LARGE OBJECT */
#define DSQL_BOOLEAN 13 /* BOOLEAN */
#define DSQL_DATE 14 /* DATE*/
#define DSQL_TIME 15 /* TIME*/
#define DSQL_TIMESTAMP 16 /* DATE TIME */
#define DSQL_BINARY 17 /* BINARY */
#define DSQL_VARBINARY 18 /* VAR BINARY */
#define DSQL_CLOB 19 /* TEXT */
#define DSQL_TIME_TZ 22 /* TIME WITH TIME ZONE*/
#define DSQL_TIMESTAMP_TZ 23 /* TIMESTAMP WITH TIME ZONE*/
#define DSQL_CLASS 24
#define DSQL_RECORD 25
#define DSQL_ARRAY 26
#define DSQL_SARRAY 27
#define DSQL_ROWID 28 /* ROWID*/
#define DSQL_RSET 119 /* RESULT SET*/
#define DSQL_BFILE 1000 /* BFILE*/
#define DSQL_INTERVAL_TYPE_BASE 100
#define DSQL_INTERVAL_TYPE_END 112
#define DSQL_INTERVAL_YEAR DSQL_INTERVAL_TYPE_BASE
#define DSQL_INTERVAL_MONTH (DSQL_INTERVAL_TYPE_BASE + 1)
#define DSQL_INTERVAL_DAY (DSQL_INTERVAL_TYPE_BASE + 2)
#define DSQL_INTERVAL_HOUR (DSQL_INTERVAL_TYPE_BASE + 3)
#define DSQL_INTERVAL_MINUTE (DSQL_INTERVAL_TYPE_BASE + 4)
#define DSQL_INTERVAL_SECOND (DSQL_INTERVAL_TYPE_BASE + 5)
#define DSQL_INTERVAL_YEAR_TO_MONTH (DSQL_INTERVAL_TYPE_BASE + 6)
#define DSQL_INTERVAL_DAY_TO_HOUR (DSQL_INTERVAL_TYPE_BASE + 7)
#define DSQL_INTERVAL_DAY_TO_MINUTE (DSQL_INTERVAL_TYPE_BASE + 8)
#define DSQL_INTERVAL_DAY_TO_SECOND (DSQL_INTERVAL_TYPE_BASE + 9)
#define DSQL_INTERVAL_HOUR_TO_MINUTE (DSQL_INTERVAL_TYPE_BASE + 10)
#define DSQL_INTERVAL_HOUR_TO_SECOND (DSQL_INTERVAL_TYPE_BASE + 11)
#define DSQL_INTERVAL_MINUTE_TO_SECOND (DSQL_INTERVAL_TYPE_BASE + 12)
#define DSQL_IS_TYPE_INTERVAL(type) (DSQL_INTERVAL_TYPE_BASE <= (type) && (type) <= DSQL_INTERVAL_TYPE_END)
#define DSQL_IS_TYPE_INTERVAL_YM(type) (type == DSQL_INTERVAL_YEAR || type == DSQL_INTERVAL_MONTH || type == DSQL_INTERVAL_YEAR_TO_MONTH)
#define DSQL_IS_TYPE_INTERVAL_DT(type) (DSQL_IS_TYPE_INTERVAL(type) && !DSQL_IS_TYPE_INTERVAL_YM(type))
#define DSQL_IS_TYPE_DATETIME(type) (DSQL_DATE <= type && type <= DSQL_TIMESTAMP)
//diagnose function code definition
#define DSQL_DIAG_FUNC_CODE_INVALID 0
#define DSQL_DIAG_FUNC_CODE_SELECT 1
#define DSQL_DIAG_FUNC_CODE_INSERT 2
#define DSQL_DIAG_FUNC_CODE_DELETE 3
#define DSQL_DIAG_FUNC_CODE_UPDATE 4
#define DSQL_DIAG_FUNC_CODE_CREATE_DB 5
#define DSQL_DIAG_FUNC_CODE_CREATE_TAB 6
#define DSQL_DIAG_FUNC_CODE_DROP_TAB 7
#define DSQL_DIAG_FUNC_CODE_CREATE_VIEW 8
#define DSQL_DIAG_FUNC_CODE_DROP_VIEW 9
#define DSQL_DIAG_FUNC_CODE_CREATE_INDEX 10
#define DSQL_DIAG_FUNC_CODE_DROP_INDEX 11
#define DSQL_DIAG_FUNC_CODE_CREATE_USER 12
#define DSQL_DIAG_FUNC_CODE_DROP_USER 13
#define DSQL_DIAG_FUNC_CODE_CREATE_ROLE 14
#define DSQL_DIAG_FUNC_CODE_DROP_ROLE 15
#define DSQL_DIAG_FUNC_CODE_COMMIT 16
#define DSQL_DIAG_FUNC_CODE_ROLLBACK 17
#define DSQL_DIAG_FUNC_CODE_EXPLAIN 18
#define DSQL_DIAG_FUNC_CODE_SET_TRX 19
#define DSQL_DIAG_FUNC_CODE_SAVE_POINT 20
#define DSQL_DIAG_FUNC_CODE_DROP 21
#define DSQL_DIAG_FUNC_CODE_ALTER_DB 22
#define DSQL_DIAG_FUNC_CODE_ALTER_USER 23
#define DSQL_DIAG_FUNC_CODE_CREATE_FUNC 24
#define DSQL_DIAG_FUNC_CODE_SET_CURRENT_DB 25
#define DSQL_DIAG_FUNC_CODE_GRANT 26
#define DSQL_DIAG_FUNC_CODE_REVOKE 27
#define DSQL_DIAG_FUNC_CODE_CALL 28
#define DSQL_DIAG_FUNC_CODE_ALTER_TAB 29
#define DSQL_DIAG_FUNC_CODE_CREATE_SCHEMA 30
#define DSQL_DIAG_FUNC_CODE_AUDIT 31
#define DSQL_DIAG_FUNC_CODE_ALTER_TRIGGER 32
#define DSQL_DIAG_FUNC_CODE_SELECT_INTO 33
#define DSQL_DIAG_FUNC_CODE_FETCH 34
#define DSQL_DIAG_FUNC_CODE_CLOSE_CURSOR 35
#define DSQL_DIAG_FUNC_CODE_TRUNC_TAB 36
#define DSQL_DIAG_FUNC_CODE_CREATE_SEQUENCE 37
#define DSQL_DIAG_FUNC_CODE_CREATE_LOGIN 38
#define DSQL_DIAG_FUNC_CODE_ALTER_LOGIN 39
#define DSQL_DIAG_FUNC_CODE_CREATE_CONTEXT_INDEX 40
#define DSQL_DIAG_FUNC_CODE_DROP_CONTEXT_INDEX 41
#define DSQL_DIAG_FUNC_CODE_ALT_CONTER_INDEX 42
#define DSQL_DIAG_FUNC_CODE_CURSOR_DELETE 43
#define DSQL_DIAG_FUNC_CODE_CURSOR_UPDATE 44
#define DSQL_DIAG_FUNC_CODE_CREATE_LINK 45
#define DSQL_DIAG_FUNC_CODE_LOCK_TAB 46
#define DSQL_DIAG_FUNC_CODE_CREATE_POLICY 47
#define DSQL_DIAG_FUNC_CODE_ALTER_POLICY 48
#define DSQL_DIAG_FUNC_CODE_ALTER_USER_POLICY 49
#define DSQL_DIAG_FUNC_CODE_ALTER_TABLE_POLICY 50
#define DSQL_DIAG_FUNC_CODE_CREATE_RULE 51
#define DSQL_DIAG_FUNC_CODE_CREATE_OPERATOR 52
#define DSQL_DIAG_FUNC_CODE_CREATE_ALERT 53
#define DSQL_DIAG_FUNC_CODE_CREATE_JOB 54
#define DSQL_DIAG_FUNC_CODE_ALTER_OPERATOR 55
#define DSQL_DIAG_FUNC_CODE_ALTER_ALERT 56
#define DSQL_DIAG_FUNC_CODE_ALTER_JOB 57
#define DSQL_DIAG_FUNC_CODE_SET_IDENTINS 58
#define DSQL_DIAG_FUNC_CODE_BACKUP_DATABASE 59
#define DSQL_DIAG_FUNC_CODE_RESTORE_DATABASE 60
#define DSQL_DIAG_FUNC_CODE_CREATE_PACKAGE 61
#define DSQL_DIAG_FUNC_CODE_CREATE_PACKAGE_BODY 62
#define DSQL_DIAG_FUNC_CODE_CREATE_TYPE 63
#define DSQL_DIAG_FUNC_CODE_CREATE_TYPE_BODY 64
#define DSQL_DIAG_FUNC_CODE_CREATE_SYNONYM 65
#define DSQL_DIAG_FUNC_CODE_CREATE_CRYPT 66
#define DSQL_DIAG_FUNC_CODE_ALTER_CRYPT 67
#define DSQL_DIAG_FUNC_CODE_SET_CURRENT_SCHEMA 68
#define DSQL_DIAG_FUNC_CODE_MERGE 69
#define DSQL_DIAG_FUNC_CODE_SET_TIME_ZONE 70
#define DSQL_DIAG_FUNC_CODE_CREATE_TABLESPACE 71
#define DSQL_DIAG_FUNC_CODE_ALTER_TABLESPACE 72
#define DSQL_DIAG_FUNC_CODE_COMMENT 73
#define DSQL_DIAG_FUNC_CODE_ALTER_SESSION 74
#define DSQL_DIAG_FUNC_CODE_CREATE_DOMAIN 75
#define DSQL_DIAG_FUNC_CODE_CREATE_CHARSET 76
#define DSQL_DIAG_FUNC_CODE_CREATE_COLLATION 77
#define DSQL_DIAG_FUNC_CODE_CREATE_CONTEXT 78
#define DSQL_DIAG_FUNC_CODE_ALTER_INDEX 79
#define DSQL_DIAG_FUNC_CODE_STAT_ON 80
#define DSQL_DIAG_FUNC_CODE_CREATE_PROCEDURE 81
#define DSQL_DIAG_FUNC_CODE_ALT_SESS_TIMESTAMP_FMT 82
#define DSQL_DIAG_FUNC_CODE_ALT_SESS_TIMESTAMP_TZ_FMT 83
#define DSQL_DIAG_FUNC_CODE_ALT_SESS_TIME_FMT 84
#define DSQL_DIAG_FUNC_CODE_ALT_SESS_DATE_FMT 85
#define DSQL_DIAG_FUNC_CODE_ALT_SESS_TIME_TZ_FMT 86
#define DSQL_DIAG_FUNC_CODE_ALT_SESS_DATE_LANGUAGE 87
#define DSQL_DIAG_FUNC_CODE_CREATE_PROFILE 88
#define DSQL_DIAG_FUNC_CODE_ALTER_PROFILE 89
#define DSQL_DIAG_FUNC_CODE_DROP_PROFILE 90
#define DSQL_DIAG_FUNC_CODE_CREATE_DIRECTORY 91 /* create directory */
#define DSQL_DIAG_FUNC_CODE_BEGIN_TRAN 92 /* begin transaction */
#define DSQL_DIAG_FUNC_CODE_CREATE_OPRT 93 // create operator
#define DSQL_DIAG_FUNC_CODE_DROP_OPRT 94 // drop operator
#define DSQL_DIAG_FUNC_CODE_CPART_GROUP 95 // create partition group
#define DSQL_DIAG_FUNC_CODE_ALTER_FUNCTION 96 // alter function
/* internal representation of numeric data type */
#define DPI_MAX_NUMERIC_LEN 16
typedef struct dpi_numeric_struct dpi_numeric_t;
struct dpi_numeric_struct
{
udbyte precision;
sdbyte scale;
udbyte sign; /* 1 if positive, 0 if negative */
udbyte val[DPI_MAX_NUMERIC_LEN];
};
typedef struct dpi_date_struct dpi_date_t;
struct dpi_date_struct
{
sdint2 year;
udint2 month;
udint2 day;
};
typedef struct dpi_time_struct dpi_time_t;
struct dpi_time_struct
{
udint2 hour;
udint2 minute;
udint2 second;
};
typedef struct dpi_timestamp_struct dpi_timestamp_t;
struct dpi_timestamp_struct
{
sdint2 year;
udint2 month;
udint2 day;
udint2 hour;
udint2 minute;
udint2 second;
udint4 fraction;
};
typedef enum
{
DSQL_IS_YEAR = 1,
DSQL_IS_MONTH = 2,
DSQL_IS_DAY = 3,
DSQL_IS_HOUR = 4,
DSQL_IS_MINUTE = 5,
DSQL_IS_SECOND = 6,
DSQL_IS_YEAR_TO_MONTH = 7,
DSQL_IS_DAY_TO_HOUR = 8,
DSQL_IS_DAY_TO_MINUTE = 9,
DSQL_IS_DAY_TO_SECOND = 10,
DSQL_IS_HOUR_TO_MINUTE = 11,
DSQL_IS_HOUR_TO_SECOND = 12,
DSQL_IS_MINUTE_TO_SECOND = 13
} DPIINTERVAL;
typedef struct dpi_year_month_struct dpi_year_month_t;
struct dpi_year_month_struct
{
udint4 year;
udint4 month;
};
typedef struct dpi_day_second_struct dpi_day_second_t;
struct dpi_day_second_struct
{
udint4 day;
udint4 hour;
udint4 minute;
udint4 second;
udint4 fraction;
};
typedef struct dpi_interval_struct dpi_interval_t;
struct dpi_interval_struct
{
DPIINTERVAL interval_type;
sdint2 interval_sign; //1:- 0:+
union {
dpi_year_month_t year_month;
dpi_day_second_t day_second;
} intval;
};
/* environment attribute */
#define DSQL_ATTR_OUTPUT_NTS 10001
/* connection attributes */
#define DSQL_ATTR_AUTO_IPD 10001
/* statement attributes */
#define DSQL_ATTR_APP_ROW_DESC 10010
#define DSQL_ATTR_APP_PARAM_DESC 10011
#define DSQL_ATTR_IMP_ROW_DESC 10012
#define DSQL_ATTR_IMP_PARAM_DESC 10013
#define DSQL_ATTR_METADATA_ID 10014
#define DSQL_ATTR_CURSOR_SCROLLABLE (-1)
#define DSQL_ATTR_CURSOR_SENSITIVITY (-2)
#define DSQL_ATTR_SQL_CHARSET (20000)
#define DSQL_ATTR_IGN_BP_ERR (20001)
#define DSQL_ATTR_BP_MAX_ERRS (20002)
#define DSQL_ATTR_ROW_IND_BIND_TYPE (20003)
#define DSQL_ATTR_PARAM_IND_BIND_TYPE (20004)
#define DSQL_ATTR_FETCH_PACKAGE_SIZE (20005)
#define DSQL_ATTR_PARAM_AFFECT_ROWS_PTR (20006)
/* DSQL_ATTR_CURSOR_SCROLLABLE values */
#define DSQL_NONSCROLLABLE 0
#define DSQL_SCROLLABLE 1
/* identifiers of fields in the SQL descriptor */
#define DSQL_DESC_COUNT 1001
#define DSQL_DESC_TYPE 1002
#define DSQL_DESC_LENGTH 1003
#define DSQL_DESC_OCTET_LENGTH_PTR 1004
#define DSQL_DESC_PRECISION 1005
#define DSQL_DESC_SCALE 1006
#define DSQL_DESC_DATETIME_INTERVAL_CODE 1007
#define DSQL_DESC_NULLABLE 1008
#define DSQL_DESC_INDICATOR_PTR 1009
#define DSQL_DESC_DATA_PTR 1010
#define DSQL_DESC_NAME 1011
#define DSQL_DESC_UNNAMED 1012
#define DSQL_DESC_OCTET_LENGTH 1013
#define DSQL_DESC_ALLOC_TYPE 1099
/* Statement attribute values for cursor sensitivity */
#define DSQL_UNSPECIFIED 0
#define DSQL_INSENSITIVE 1
#define DSQL_SENSITIVE 2
/* Default conversion code for dpi_bind_col(), dpi_bind_param() and dpi_get_data() */
#define DSQL_DEFAULT 99
/* dpi_get_data() code indicating that the application row descriptor
* specifies the data type
*/
#define DSQL_ARD_TYPE (-99)
#define DSQL_FALSE 0
#define DSQL_TRUE 1
/* values of NULLABLE field in descriptor */
#define DSQL_NO_NULLS 0
#define DSQL_NULLABLE 1
/* Values returned to show WHERE clause
* supported
*/
#define DSQL_PRED_NONE 0
#define DSQL_PRED_CHAR 1
#define DSQL_PRED_BASIC 2
#define DSQL_PRED_SEARCHABLE 3
/* values of UNNAMED field in descriptor */
#define DSQL_NAMED 0
#define DSQL_UNNAMED 1
/* values of ALLOC_TYPE field in descriptor */
#define DSQL_DESC_ALLOC_AUTO 1
#define DSQL_DESC_ALLOC_USER 2
/* Codes used for FetchOrientation in dpi_fetch_scroll()
*/
#define DSQL_FETCH_NEXT 1
#define DSQL_FETCH_FIRST 2
/* Other codes used for FetchOrientation in dpi_fetch_scroll() */
#define DSQL_FETCH_LAST 3
#define DSQL_FETCH_PRIOR 4
#define DSQL_FETCH_ABSOLUTE 5
#define DSQL_FETCH_RELATIVE 6
#define DSQL_FETCH_BOOKMARK 8
/* dpi_end_tran() options */
#define DSQL_COMMIT 0
#define DSQL_ROLLBACK 1
/* null handles returned by dpi_alloc_handle() */
#define DSQL_NULL_HENV 0
#define DSQL_NULL_HDBC 0
#define DSQL_NULL_HSTMT 0
#define DSQL_NULL_HDESC 0
#define DSQL_NULL_HLOB 0
/* null handle used in place of parent handle when allocating HENV */
#define DSQL_NULL_HANDLE 0L
//#define ISO_LEVEL_INVALID (-1)
#define ISO_LEVEL_READ_UNCOMMITTED 0
#define ISO_LEVEL_READ_COMMITTED 1
#define ISO_LEVEL_REPEATABLE_READ 2
#define ISO_LEVEL_SERIALIZABLE 3
/* Reserved values for UNIQUE argument of dpi_statistics() */
#define DSQL_INDEX_UNIQUE 0
/* Values that may appear in the result set of dpi_specialcolumns() */
#define DSQL_SCOPE_CURROW 0
/* Column types and scopes in dpi_specialcolumns(). */
#define DSQL_BEST_ROWID 1
#define DSQL_ROWVER 2
//DPI call interface
DllExport
DPIRETURN
dpi_module_init();
DllExport
DPIRETURN
dpi_module_deinit();
//handle function
DllExport
DPIRETURN
dpi_alloc_handle(
sdint2 hndl_type,
dhandle hndl_in,
dhandle* hndl_out
);
DllExport
DPIRETURN
dpi_free_handle(
sdint2 hndl_type,
dhandle hndl
);
DllExport
DPIRETURN
dpi_alloc_env(
dhenv* dpi_henv
);
DllExport
DPIRETURN
dpi_alloc_con(
dhenv dpi_henv,
dhcon* dpi_hcon
);
DllExport
DPIRETURN
dpi_alloc_stmt(
dhcon dpi_hcon,
dhstmt* dpi_hstmt
);
DllExport
DPIRETURN
dpi_alloc_desc(
dhcon dpi_hcon,
dhdesc* dpi_hdesc
);
DllExport
DPIRETURN
dpi_alloc_lob_locator(
dhstmt dpi_hstmt,
dhloblctr* dpi_loblctr
);
DllExport
DPIRETURN
dpi_alloc_lob_locator2(
dhcon dpi_hcon,
dhloblctr* dpi_loblctr
);
DllExport
DPIRETURN
dpi_alloc_bfile(
dhcon dpi_hcon,
dhbfile* dpi_loblctr
);
DllExport
DPIRETURN
dpi_free_env(
dhenv dpi_henv
);
DllExport
DPIRETURN
dpi_free_con(
dhcon dpi_hcon
);
DllExport
DPIRETURN
dpi_free_stmt(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_free_desc(
dhdesc dpi_hdesc
);
DllExport
DPIRETURN
dpi_free_lob_locator(
dhloblctr dpi_loblctr
);
DllExport
DPIRETURN
dpi_free_bfile(
dhbfile bfile_lctr
);
DllExport
DPIRETURN
dpi_set_env_attr(
dhenv dpi_henv,
sdint4 attr_id,
dpointer val,
sdint4 val_len
);
DllExport
DPIRETURN
dpi_set_con_attr(
dhcon dpi_hcon,
sdint4 attr_id,
dpointer val,
sdint4 val_len
);
DllExport
DPIRETURN
dpi_set_stmt_attr(
dhstmt dpi_hstmt,
sdint4 attr_id,
dpointer val,
sdint4 val_len
);
DllExport
DPIRETURN
dpi_get_env_attr(
dhenv dpi_henv,
sdint4 attr_id,
dpointer val,
sdint4 buf_len,
sdint4* val_len
);
DllExport
DPIRETURN
dpi_get_con_attr(
dhcon dpi_hcon,
sdint4 attr_id,
dpointer val,
sdint4 buf_len,
sdint4* val_len
);
DllExport
DPIRETURN
dpi_get_stmt_attr(
dhstmt dpi_hstmt,
sdint4 attr_id,
dpointer val,
sdint4 buf_len,
sdint4* val_len
);
//diagnose functions
DllExport
DPIRETURN
dpi_get_diag_rec(
sdint2 hndl_type,
dhandle hndl,
sdint2 rec_num,
sdint4* err_code,
sdbyte* err_msg,
sdint2 buf_sz,
sdint2* msg_len
);
DllExport
DPIRETURN
dpi_get_diag_field(
sdint2 hndl_type,
dhandle hndl,
sdint2 rec_num,
sdint2 diag_id,
dpointer diag_info,
slength buf_len,
slength* info_len
);
//connection functions
DllExport
DPIRETURN
dpi_login(
dhcon dpi_hcon,
sdbyte* svr,
sdbyte* user,
sdbyte* pwd
);
DllExport
DPIRETURN
dpi_logout(
dhcon dpi_hcon
);
DllExport
DPIRETURN
dpi_commit(
dhcon dpi_hcon
);
DllExport
DPIRETURN
dpi_rollback(
dhcon dpi_hcon
);
DllExport
DPIRETURN
dpi_end_tran(
sdint2 hndl_type, //in
dhandle hndl, //in
sdint2 type
);
DllExport
DPIRETURN
dpi_cancel(
dhstmt dpi_hstmt
);
//descripton functions
DllExport
DPIRETURN
dpi_copy_desc(
dhdesc src_desc,
dhdesc target_desc
);
DllExport
DPIRETURN
dpi_set_desc_rec(
dhdesc dpi_desc,
udint2 rec_num,
sdint2 type,
sdint2 sub_type,
slength length,
sdint2 prec,
sdint2 scale,
dpointer data_ptr,
slength* str_len,
slength* ind_ptr
);
DllExport
DPIRETURN
dpi_set_desc_field(
dhdesc dpi_desc,
udint2 rec_num,
sdint2 field,
dpointer val,
sdint4 val_len
);
DllExport
DPIRETURN
dpi_get_desc_rec(
dhdesc dpi_desc,
udint2 rec_num,
sdbyte* name_buf,
sdint2 name_buf_len,
sdint2* name_len,
sdint2* type,
sdint2* sub_type,
slength* length,
sdint2* prec,
sdint2* scale,
sdint2* nullable
);
DllExport
DPIRETURN
dpi_get_desc_field(
dhdesc dpi_desc,
udint2 rec_num,
sdint2 field,
dpointer val,
sdint4 val_len,
sdint4* str_len
);
//statement function
//statement execution operation
DllExport
DPIRETURN
dpi_bind_param(
dhstmt dpi_hstmt,
udint2 iparam, //1-based index
sdint2 param_type,
sdint2 ctype,
sdint2 dtype,
ulength precision,
sdint2 scale,
dpointer buf,
slength buf_len,
slength* ind_ptr
);
DllExport
DPIRETURN
dpi_bind_param2(
dhstmt dpi_hstmt,
udint2 iparam, //1-based index
sdint2 param_type,
sdint2 ctype,
sdint2 dtype,
ulength precision,
sdint2 scale,
dpointer buf,
slength buf_len,
slength* ind_ptr,
slength* act_len_ptr
);
DllExport
DPIRETURN
dpi_desc_param(
dhstmt dpi_hstmt,
udint2 iparam, //1-based
sdint2* sql_type,
ulength* prec,
sdint2* scale,
sdint2* nullable
);
DllExport
DPIRETURN
dpi_exec(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_exec_direct(
dhstmt dpi_hstmt,
sdbyte* sql_txt
);
DllExport
DPIRETURN
dpi_exec_add_batch(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_exec_batch(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_unbind_params(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_unbind_columns(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_param_data(
dhstmt dpi_hstmt,
dpointer* val_ptr
);
DllExport
DPIRETURN
dpi_prepare(
dhstmt dpi_hstmt,
sdbyte* sql_txt
);
DllExport
DPIRETURN
dpi_put_data(
dhstmt dpi_hstmt,
dpointer val,
slength val_len
);
DllExport
DPIRETURN
dpi_number_params(
dhstmt dpi_stmt,
udint2* param_cnt
);
DllExport
DPIRETURN
dpi_set_cursor_name(
dhstmt dpi_hstmt,
sdbyte* name,
sdint2 name_len
);
DllExport
DPIRETURN
dpi_get_cursor_name(
dhstmt dpi_hstmt,
sdbyte* name,
sdint2 buf_len,
sdint2 *name_len
);
//statement resultset operation
DllExport
DPIRETURN
dpi_close_cursor(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_bind_col(
dhstmt dpi_hstmt,
udint2 icol,
sdint2 ctype,
dpointer val,
slength buf_len,
slength* ind
);
DllExport
DPIRETURN
dpi_bind_col2(
dhstmt dpi_hstmt,
udint2 icol,
sdint2 ctype,
dpointer val,
slength buf_len,
slength* ind,
slength* act_len
);
DllExport
DPIRETURN
dpi_number_columns(
dhstmt dpi_stmt,
sdint2* col_cnt
);
DllExport
DPIRETURN
dpi_desc_column(
dhstmt dpi_hstmt,
sdint2 icol,
sdbyte* name,
sdint2 buf_len,
sdint2* name_len,
sdint2* sqltype,
ulength* col_sz,
sdint2* dec_digits,
sdint2* nullable
);
DllExport
DPIRETURN
dpi_col_attr(
dhstmt dpi_hstmt,
udint2 icol,
udint2 fld_id,
dpointer chr_attr,
sdint2 buf_len,
sdint2* chr_attr_len,
slength* num_attr
);
DllExport
DPIRETURN
dpi_bulk_operation(
dhstmt dpi_hstmt,
udint2 op
);
DllExport
DPIRETURN
dpi_fetch(
dhstmt dpi_hstmt,
ulength* row_num
);
DllExport
DPIRETURN
dpi_fetch_scroll(
dhstmt dpi_hstmt,
sdint2 orient,
slength offset,
ulength* row_num
);
DllExport
DPIRETURN
dpi_get_data(
dhstmt dpi_hstmt,
udint2 icol,
sdint2 ctype,
dpointer val,
slength buf_len,
slength* val_len
);
DllExport
DPIRETURN
dpi_get_data2(
dhstmt dpi_hstmt,
udint2 icol,
sdint2 ctype,
dpointer val,
slength buf_len,
slength* val_len,
slength* act_len
);
DllExport
DPIRETURN
dpi_more_results(
dhstmt dpi_hstmt
);
DllExport
DPIRETURN
dpi_set_pos(
dhstmt dpi_hstmt,
ulength row_num,
udint2 op,
udint2 lock_type
);
DllExport
DPIRETURN
dpi_row_count(
dhstmt dpi_hstmt,
sdint8* row_num
);
DllExport
DPIRETURN
dpi_lob_get_length(
dhloblctr dpi_loblctr,
slength* len
);
DllExport
DPIRETURN
dpi_lob_get_length2(
dhloblctr dpi_loblctr,
sdint8* len
);
DllExport
DPIRETURN
dpi_lob_read(
dhloblctr dpi_loblctr,
ulength start_pos,
sdint2 ctype,
slength data_to_read,
dpointer val_buf,
slength buf_len,
slength* data_get
);
DllExport
DPIRETURN
dpi_lob_read2(
dhloblctr dpi_loblctr,
udint8 start_pos,
sdint2 ctype,
slength data_to_read,
dpointer val_buf,
slength buf_len,
slength* data_get
);
DllExport
DPIRETURN
dpi_lob_read3(
dhloblctr dpi_loblctr,
udint8 start_pos,
sdint2 ctype,
slength data_to_read,
dpointer val_buf,
slength buf_len,
slength* data_get,
slength* data_get_bytes
);
DllExport
DPIRETURN
dpi_lob_write(
dhloblctr dpi_loblctr,
ulength start_pos,
sdint2 ctype,
dpointer val,
ulength bytes_to_write,
ulength* data_writed
);
DllExport
DPIRETURN
dpi_lob_write2(
dhloblctr dpi_loblctr,
udint8 start_pos,
sdint2 ctype,
dpointer val,
ulength bytes_to_write,
ulength* data_writed
);
DllExport
DPIRETURN
dpi_lob_truncate(
dhloblctr dpi_loblctr,
ulength len,
ulength* data_len
);
DllExport
DPIRETURN
dpi_lob_truncate2(
dhloblctr dpi_loblctr,
udint8 len,
udint8* data_len
);
//////complex object
DllExport
DPIRETURN
dpi_desc_obj(
dhcon dpi_con,
sdbyte* schema,
sdbyte* compobj_name,
dhobjdesc* obj_desc
);
DllExport
DPIRETURN
dpi_desc_obj2(
dhcon dpi_con,
sdbyte* schema,
sdbyte* pkg_name,
sdbyte* compobj_name,
dhobjdesc* obj_desc
);
DllExport
DPIRETURN
dpi_free_obj_desc(
dhobjdesc obj_desc
);
DllExport
DPIRETURN
dpi_alloc_obj(
dhcon dpi_con,
dhobj* object
);
DllExport
DPIRETURN
dpi_free_obj(
dhobj object
);
DllExport
DPIRETURN
dpi_get_obj_attr(
dhobj object,
udint4 nth,
udint2 attr_id,
dpointer buf,
udint4 buf_len,
slength* len
);
DllExport
DPIRETURN
dpi_get_obj_desc_attr(
dhobjdesc obj_desc,
udint4 nth,
udint2 attr_id,
dpointer buf,
udint4 buf_len,
slength* len
);
DllExport
DPIRETURN
dpi_bind_obj_desc(
dhobj object,
dhobjdesc desc
);
DllExport
DPIRETURN
dpi_unbind_obj_desc(
dhobj object
);
DllExport
DPIRETURN
dpi_set_obj_val(
dhobj object,
udint4 nth,
udint2 ctype,
dpointer val,
slength val_len
);
DllExport
DPIRETURN
dpi_set_indtab_node(
dhobj object,
udint2 ktype,
dpointer key,
slength key_len,
udint2 vtype,
dpointer val,
slength val_len
);
DllExport
DPIRETURN
dpi_get_obj_val(
dhobj object,
udint4 nth,
udint2 ctype,
dpointer val,
udint4 buf_len,
slength* val_len
);
////bfile
DllExport
DPIRETURN
dpi_bfile_construct(
dhbfile bfile_lctr,
udbyte* dir_name,
udbyte* file_name
);
DllExport
DPIRETURN
dpi_bfile_get_name(
dhbfile bfile_lctr,
udbyte* dir_buf,
udint4 dir_buf_len,
udint4* dir_len,
udbyte* file_buf,
udint4 file_buf_len,
udint4* file_len
);
DllExport DPIRETURN
dpi_bfile_read(
dhbfile dpi_bfile,
udint8 start_pos, //1 based:blob bytes clob chars
sdint2 ctype,
udint8 data_to_read, //0:default blob bytes clob chars
dpointer val_buf,
udint8 buf_len,
udint8* data_get //blob:bytes_get clob:chars
);
//catalog functions
DllExport
DPIRETURN
dpi_tables(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* tablename,
sdint2 namelength3,
udbyte* tabletype,
sdint2 namelength4
);
DllExport
DPIRETURN
dpi_columns(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* tablename,
sdint2 namelength3,
udbyte* columnname,
sdint2 namelength4
);
DllExport
DPIRETURN
dpi_statistics(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* tablename,
sdint2 namelength3,
udint2 unique,
udint2 reserved
);
DllExport
DPIRETURN
dpi_specialcolumns(
dhstmt dpi_stmt,
udint2 identifiertype,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* tablename,
sdint2 namelength3,
udint2 scope,
udint2 nullable
);
DllExport
DPIRETURN
dpi_primarykeys(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* tablename,
sdint2 namelength3
);
DllExport
DPIRETURN
dpi_foreignkeys(
dhstmt dpi_stmt,
udbyte* szpkcatalogname,
sdint2 cbpkcatalogname,
udbyte* szpkschemaname,
sdint2 cbpkschemaname,
udbyte* szpktablename,
sdint2 cbpktablename,
udbyte* szfkcatalogname,
sdint2 cbfkcatalogname,
udbyte* szfkschemaname,
sdint2 cbfkschemaname,
udbyte* szfktablename,
sdint2 cbfktablename
);
DllExport
DPIRETURN
dpi_tableprivileges(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* tablename,
sdint2 namelength3
);
DllExport
DPIRETURN
dpi_columnprivileges(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* tablename,
sdint2 namelength3,
udbyte* columnname,
sdint2 namelength4
);
DllExport
DPIRETURN
dpi_procedures(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* procname,
sdint2 namelength3
);
DllExport
DPIRETURN
dpi_procedurecolumns(
dhstmt dpi_stmt,
udbyte* catalogname,
sdint2 namelength1,
udbyte* schemaname,
sdint2 namelength2,
udbyte* procname,
sdint2 namelength3,
udbyte* columnname,
sdint2 namelength4
);
DllExport
DPIRETURN
dpi_build_rowid(
dhcon dpi_con,
sdint4 epno,
sdint8 partno,
udint8 real_rowid,
sdbyte* rowid_buf,
udint4 rowid_buf_len,
udint4* rowid_len
);
DllExport
DPIRETURN
dpi_rowid_to_char(
dhcon dpi_con,
sdbyte* rowid,
udint4 rowid_len,
sdbyte* dest_buf,
udint4 dest_buf_len,
udint4* dest_len
);
DllExport
DPIRETURN
dpi_char_to_rowid(
dhcon dpi_con,
sdbyte* rowid_str,
udint4 rowid_len,
sdbyte* dest_buf,
udint4 dest_buf_len,
udint4* dest_len
);
#ifdef __cplusplus
} /* End of extern "C" { */
#endif /* __cplusplus */
#endif /* #ifndef _DPI_H */