//----------------------------------------------------------------------------- // 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 */