📄 extern.h
字号:
#ifndef _ECPG_LIB_EXTERN_H#define _ECPG_LIB_EXTERN_H#include "postgres_fe.h"#include "libpq-fe.h"#include "sqlca.h"enum COMPAT_MODE{ ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX, ECPG_COMPAT_INFORMIX_SE};#define INFORMIX_MODE(X) ((X) == ECPG_COMPAT_INFORMIX || (X) == ECPG_COMPAT_INFORMIX_SE)enum ARRAY_TYPE{ ECPG_ARRAY_NOT_SET, ECPG_ARRAY_ARRAY, ECPG_ARRAY_VECTOR, ECPG_ARRAY_NONE};/* Here are some methods used by the lib. *//* Returns a pointer to a string containing a simple type name. */void ECPGadd_mem(void *ptr, int lineno);bool ECPGget_data(const PGresult *, int, int, int, enum ECPGttype type, enum ECPGttype, char *, char *, long, long, long, enum ARRAY_TYPE, enum COMPAT_MODE, bool);struct connection *ECPGget_connection(const char *);char *ECPGalloc(long, int);char *ECPGrealloc(void *, long, int);void ECPGfree(void *);bool ECPGinit(const struct connection *, const char *, const int);char *ECPGstrdup(const char *, int);const char *ECPGtype_name(enum ECPGttype);unsigned int ECPGDynamicType(Oid);void ECPGfree_auto_mem(void);void ECPGclear_auto_mem(void);struct descriptor *ecpggetdescp(int, char *);/* A generic varchar type. */struct ECPGgeneric_varchar{ int len; char arr[1];};/* * type information cache */struct ECPGtype_information_cache{ struct ECPGtype_information_cache *next; int oid; bool isarray;};/* structure to store one statement */struct statement{ int lineno; char *command; struct connection *connection; enum COMPAT_MODE compat; bool force_indicator; struct variable *inlist; struct variable *outlist;};/* structure to store connections */struct connection{ char *name; PGconn *connection; bool committed; int autocommit; struct ECPGtype_information_cache *cache_head; struct connection *next;};/* structure to store descriptors */struct descriptor{ char *name; PGresult *result; struct descriptor *next; int count; struct descriptor_item *items;};extern struct descriptor *all_descriptors;struct descriptor_item{ int num; char *data; int indicator; int length; int precision; int scale; int type; struct descriptor_item *next;};struct variable{ enum ECPGttype type; void *value; void *pointer; long varcharsize; long arrsize; long offset; enum ECPGttype ind_type; void *ind_value; void *ind_pointer; long ind_varcharsize; long ind_arrsize; long ind_offset; struct variable *next;};PGresult **ECPGdescriptor_lvalue(int line, const char *descriptor);bool ECPGstore_result(const PGresult *results, int act_field, const struct statement * stmt, struct variable * var);bool ECPGstore_input(const int, const bool, const struct variable *, const char **, bool *);#if defined(__GNUC__) && (defined (__powerpc__) || defined(__amd64__) || defined(__x86_64__)) /* work around a gcc/ABI bug with va_lists on ppc+amd64 */void ECPGget_variable(va_list, enum ECPGttype, struct variable *, bool);#elsevoid ECPGget_variable(va_list *, enum ECPGttype, struct variable *, bool);#endif/* SQLSTATE values generated or processed by ecpglib (intentionally * not exported -- users should refer to the codes directly) */#define ECPG_SQLSTATE_NO_DATA "02000"#define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_PARAMETERS "07001"#define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_TARGETS "07002"#define ECPG_SQLSTATE_RESTRICTED_DATA_TYPE_ATTRIBUTE_VIOLATION "07006"#define ECPG_SQLSTATE_INVALID_DESCRIPTOR_INDEX "07009"#define ECPG_SQLSTATE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION "08001"#define ECPG_SQLSTATE_CONNECTION_DOES_NOT_EXIST "08003"#define ECPG_SQLSTATE_TRANSACTION_RESOLUTION_UNKNOWN "08007"#define ECPG_SQLSTATE_CARDINALITY_VIOLATION "21000"#define ECPG_SQLSTATE_NULL_VALUE_NO_INDICATOR_PARAMETER "22002"#define ECPG_SQLSTATE_ACTIVE_SQL_TRANSACTION "25001"#define ECPG_SQLSTATE_NO_ACTIVE_SQL_TRANSACTION "25P01"#define ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME "26000"#define ECPG_SQLSTATE_INVALID_SQL_DESCRIPTOR_NAME "33000"#define ECPG_SQLSTATE_INVALID_CURSOR_NAME "34000"#define ECPG_SQLSTATE_SYNTAX_ERROR "42601"#define ECPG_SQLSTATE_DATATYPE_MISMATCH "42804"#define ECPG_SQLSTATE_DUPLICATE_CURSOR "42P03"/* implementation-defined internal errors of ecpg */#define ECPG_SQLSTATE_ECPG_INTERNAL_ERROR "YE000"#define ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY "YE001"#endif /* _ECPG_LIB_EXTERN_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -