/* -*- C -*- */
/* sqlcli.h  Header File for SQL CLI.
 * The actual header file must contain at least the information
 * specified here, except that the comments may vary.
 *
 * This file is adapted for PostgreSQL
 * from the SQL98 August 1994 draft standard.
 * Thomas G. Lockhart 1999-06-16
 *
 * Updated from Date and Darwen, 1997, with some definitions
 * not in the SQL3 August 1994 draft standard
 * - Thomas Lockhart 1999-06-17
 */

/* API declaration data types */
typedef unsigned char SQLCHAR;
typedef long SQLINTEGER;
typedef short SQLSMALLINT;
typedef double SQLDOUBLE;
typedef float SQLREAL;
typedef void *SQLPOINTER;
typedef unsigned char SQLDATE;
typedef unsigned char SQLTIME;
typedef unsigned char SQLTIMESTAMP;
typedef unsigned char SQLDECIMAL;
typedef unsigned char SQLNUMERIC;

/* function return type */
typedef SQLSMALLINT SQLRETURN;

/* generic data structures */
typedef SQLINTEGER SQLHENV;		/* environment handle */
typedef SQLINTEGER SQLHDBC;		/* connection handle */
typedef SQLINTEGER SQLHSTMT;	/* statement handle */
typedef SQLINTEGER SQLHDESC;	/* descriptor handle */

/* special length/indicator values */
#define SQL_NULL_DATA			  -1
#define SQL_DATA_AT_EXEC		  -2

/* return values from functions */
#define SQL_SUCCESS				   0
#define SQL_SUCCESS_WITH_INFO	   1
#define SQL_NEED_DATA			  99
#define SQL_NO_DATA				 100
#define SQL_ERROR				  -1
#define SQL_INVALID_HANDLE		  -2

/* test for SQL_SUCCESS or SQL_SUCCESS_WITH_INFO */
#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)

/* flags for null-terminated string */
#define SQL_NTS					  -3
#define SQL_NTSL				  -3L

/* maximum message length from Date and Darwen
 * was 255 in the August 1994 draft standard
 * - Thomas Lockhart 1999-06-17
 */
#define SQL_MAX_MESSAGE_LENGTH	 512

/* maximum identifier length */
#define SQL_MAX_ID_LENGTH		  18

/* date/time length constants */
/* add p+1 for time and timestamp if precision is nonzero */
#define SQL_DATE_LEN			  10
#define SQL_TIME_LEN			   8
#define SQL_TIMESTAMP_LEN		  19

/* handle type identifiers */
#define SQL_HANDLE_ENV			   1
#define SQL_HANDLE_DBC			   2
#define SQL_HANDLE_STMT			   3
#define SQL_HANDLE_DESC			   4

/* environment attribute */
#define SQL_ATTR_OUTPUT_NTS    10001

/* connection attribute */
#define SQL_ATTR_AUTO_IPD	   10001

/* statement attributes */
#define SQL_ATTR_APP_ROW_DESC		 10010
#define SQL_ATTR_APP_PARAM_DESC		 10011
#define SQL_ATTR_IMP_ROW_DESC		 10012
#define SQL_ATTR_IMP_PARAM_DESC		 10013
#define SQL_ATTR_CURSOR_SCROLLABLE		-1
#define SQL_ATTR_CURSOR_SENSITIVITY		-2

/* identifiers of fields in the SQL descriptor */
/* These ran 1-99 in the August 1994 draft standard
 * - Thomas Lockhart 1999-06-17
 */
#define SQL_DESC_COUNT						  1001
#define SQL_DESC_TYPE						  1002
#define SQL_DESC_LENGTH						  1003
#define SQL_DESC_OCTET_LENGTH_POINTER		  1004
#define SQL_DESC_PRECISION					  1005
#define SQL_DESC_SCALE						  1006
#define SQL_DESC_DATETIME_INTERVAL_CODE		  1007
#define SQL_DESC_NULLABLE					  1008
#define SQL_DESC_INDICATOR_POINTER			  1009
#define SQL_DESC_DATA_POINTER				  1010
#define SQL_DESC_NAME						  1011
#define SQL_DESC_UNNAMED					  1012
#define SQL_DESC_OCTET_LENGTH				  1013
#define SQL_DESC_DATETIME_INTERVAL_PRECISION  1014
#define SQL_DESC_COLLATION_CATALOG			  1015
#define SQL_DESC_COLLATION_SCHEMA			  1016
#define SQL_DESC_COLLATION_NAME				  1017
#define SQL_DESC_CHARACTER_SET_CATALOG		  1018
#define SQL_DESC_CHARACTER_SET_SCHEMA		  1019
#define SQL_DESC_CHARACTER_SET_NAME			  1020
#define SQL_DESC_PARAMETER_MODE				  1021
#define SQL_DESC_PARAMETER_ORDINAL_POSITION   1022
#define SQL_DESC_PARAMETER_SPECIFIC_CATALOG   1023
#define SQL_DESC_PARAMETER_SPECIFIC_SCHEMA	  1024
#define SQL_DESC_PARAMETER_SPECIFIC_NAME	  1025
#define SQL_DESC_ALLOC_TYPE					  1099

/* identifiers of fields in the diagnostics area */
/* Many new definitions since August 1994 draft standard
 * - Thomas Lockhart 1999-06-17
 */
#define SQL_DIAG_RETURNCODE						 1
#define SQL_DIAG_NUMBER							 2
#define SQL_DIAG_ROW_COUNT						 3
#define SQL_DIAG_SQLSTATE						 4
#define SQL_DIAG_NATIVE							 5
#define SQL_DIAG_MESSAGE_TEXT					 6
#define SQL_DIAG_DYNAMIC_FUNCTION				 7
#define SQL_DIAG_CLASS_ORIGIN					 8
#define SQL_DIAG_SUBCLASS_ORIGIN				 9
#define SQL_DIAG_CONNECTION_NAME				10
#define SQL_DIAG_SERVER_NAME					11
#define SQL_DIAG_DYNAMIC_FUNCTION_CODE			12
#define SQL_DIAG_MORE							13
#define SQL_DIAG_CONDITION_NUMBER				14
#define SQL_DIAG_CONSTRAINT_CATALOG				15
#define SQL_DIAG_CONSTRAINT_SCHEMA				16
#define SQL_DIAG_CONSTRAINT_NAME				17
#define SQL_DIAG_CATALOG_NAME					18
#define SQL_DIAG_SCHEMA_NAME					19
#define SQL_DIAG_TABLE_NAME						20
#define SQL_DIAG_COLUMN_NAME					21
#define SQL_DIAG_CURSOR_NAME					22
#define SQL_DIAG_MESSAGE_LENGTH					23
#define SQL_DIAG_MESSAGE_OCTET_LENGTH			24

/* dynamic function codes returned in diagnostics area */
#define SQL_DIAG_ALTER_DOMAIN					 3
#define SQL_DIAG_ALTER_TABLE					 4
#define SQL_DIAG_CREATE_ASSERTION				 6
#define SQL_DIAG_CREATE_CHARACTER_SET			 8
#define SQL_DIAG_CREATE_COLLATION				10
#define SQL_DIAG_CREATE_DOMAIN					23
#define SQL_DIAG_CREATE_SCHEMA					64
#define SQL_DIAG_CREATE_TABLE					77
#define SQL_DIAG_CREATE_TRANSLATION				79
#define SQL_DIAG_CREATE_VIEW					84
#define SQL_DIAG_DELETE_WHERE					19
#define SQL_DIAG_DROP_ASSERTION					24
#define SQL_DIAG_DROP_CHARACTER_SET				25
#define SQL_DIAG_DROP_COLLATION					26
#define SQL_DIAG_DROP_DOMAIN					27
#define SQL_DIAG_DROP_SCHEMA					31
#define SQL_DIAG_DROP_TABLE						32
#define SQL_DIAG_DROP_TRANSLATION				33
#define SQL_DIAG_DROP_VIEW						36
#define SQL_DIAG_DYNAMIC_DELETE_CURSOR			54
#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR			55
#define SQL_DIAG_GRANT							48
#define SQL_DIAG_INSERT							50
#define SQL_DIAG_REVOKE							59
#define SQL_DIAG_SELECT							41
#define SQL_DIAG_SELECT_CURSOR					85
#define SQL_DIAG_SET_CATALOG					66
#define SQL_DIAG_SET_CONSTRAINT					68
#define SQL_DIAG_SET_NAMES						72
#define SQL_DIAG_SET_SCHEMA						74
#define SQL_DIAG_SET_SESSION_AUTHORIZATION		76
#define SQL_DIAG_SET_TIME_ZONE					71
#define SQL_DIAG_SET_TRANSACTION				75
#define SQL_DIAG_UNKNOWN_STATEMENT				 0
#define SQL_DIAG_UPDATE_WHERE					82

/* SQL data type codes */
#define SQL_CHAR		  1
#define SQL_NUMERIC		  2
#define SQL_DECIMAL		  3
#define SQL_INTEGER		  4
#define SQL_SMALLINT	  5
#define SQL_FLOAT		  6
#define SQL_REAL		  7
#define SQL_DOUBLE		  8
#define SQL_DATETIME	  9
#define SQL_INTERVAL	 10
#define SQL_VARCHAR		 12
#define SQL_BIT			 14
#define SQL_BIT_VARYING  15

/* One-parameter shortcuts for datetime data types */
#define SQL_TYPE_DATE					   91
#define SQL_TYPE_TIME					   92
#define SQL_TYPE_TIME_WITH_TIMEZONE		   93
#define SQL_TYPE_TIMESTAMP				   94
#define SQL_TYPE_TIMESTAMP_WITH_TIMEZONE   95
#define SQL_INTERVAL_DAY				  103
#define SQL_INTERVAL_DAY_TO_HOUR		  108
#define SQL_INTERVAL_DAY_TO_MINUTE		  109
#define SQL_INTERVAL_DAY_TO_SECOND		  110
#define SQL_INTERVAL_HOUR				  104
#define SQL_INTERVAL_HOUR_TO_MINUTE		  111
#define SQL_INTERVAL_HOUR_TO_SECOND		  112
#define SQL_INTERVAL_MINUTE				  105
#define SQL_INTERVAL_MINUTE_TO_SECOND	  113
#define SQL_INTERVAL_MONTH				  102
#define SQL_INTERVAL_SECOND				  106
#define SQL_INTERVAL_YEAR				  101
#define SQL_INTERVAL_YEAR_TO_MONTH		  107

/* GetTypeInfo request for all data types */
#define SQL_ALL_TYPES			 0

/* BindCol()  and BindParam() default conversion code */
#define SQL_DEFAULT				99

/* GetData code indicating that the application parameter */
/* descriptor specifies the data type */
#define SQL_ARD_TYPE		   -99

/* date/time type subcodes */
#define SQL_CODE_DATE			 1
#define SQL_CODE_TIME			 2
#define SQL_CODE_TIMESTAMP		 3
#define SQL_CODE_TIME_ZONE		 4
#define SQL_CODE_TIMESTAMP_ZONE  5

/* interval qualifier codes */
#define SQL_DAY					 3
#define SQL_DAY_TO_HOUR			 8
#define SQL_DAY_TO_MINUTE		 9
#define SQL_DAY_TO_SECOND		10
#define SQL_HOUR				 4
#define SQL_HOUR_TO_MINUTE		11
#define SQL_HOUR_TO_SECOND		12
#define SQL_MINUTE				 5
#define SQL_MINUTE_TO_SECOND	13
#define SQL_MONTH				 2
#define SQL_SECOND				 6
#define SQL_YEAR				 1
#define SQL_YEAR_TO_MONTH		 7

/* CLI option values */
#define SQL_FALSE				 0
#define SQL_TRUE				 1
#define SQL_NONSCROLLABLE		 0
#define SQL_SCROLLABLE			 1

/* parameter modes */
#define SQL_PARAM_MODE_IN		 1
#define SQL_PARAM_MODE_OUT		 4
#define SQL_PARAM_MODE_INOUT	 2
#define SQL_PARAM_MODE_NONE		 0

/* values of NULLABLE field in descriptor */
#define SQL_NO_NULLS			 0
#define SQL_NULLABLE			 1

/*		Values returned by GetTypeInfo for the SEARCHABLE column */
#define SQL_PRED_NONE			 0
#define SQL_PRED_CHAR			 1
#define SQL_PRED_BASIC			 2

/* values of UNNAMED field in descriptor */
#define SQL_NAMED				 0
#define SQL_UNNAMED				 1

/* values of ALLOC_TYPE field in descriptor */
#define SQL_DESC_ALLOC_AUTO		 1
#define SQL_DESC_ALLOC_USER		 2

/* EndTran()  options */
#define SQL_COMMIT				 0
#define SQL_ROLLBACK			 1

/* FreeStmt()  options */
#define SQL_CLOSE				 0
#define SQL_DROP				 1
#define SQL_UNBIND				 2
#define SQL_RESET_PARAMS		 3

/* null handles returned by AllocHandle() */
#define SQL_NULL_HENV			 0
#define SQL_NULL_HDBC			 0
#define SQL_NULL_HSTMT			 0
#define SQL_NULL_HDESC			 0

/* GetFunctions values to identify CLI routines */
#define SQL_API_SQLALLOCCONNECT			1
#define SQL_API_SQLALLOCENV				2
#define SQL_API_SQLALLOCHANDLE		 1001
#define SQL_API_SQLALLOCSTMT			3
#define SQL_API_SQLBINDCOL				4
#define SQL_API_SQLBINDPARAM		 1002
#define SQL_API_SQLCANCEL				5
#define SQL_API_SQLCLOSECURSOR		 1003
#define SQL_API_SQLCOLATTRIBUTE			6
#define SQL_API_SQLCONNECT				7
#define SQL_API_SQLCOPYDESC			 1004
#define SQL_API_SQLDATASOURCES		   57
#define SQL_API_SQLDESCRIBECOL			8
#define SQL_API_SQLDISCONNECT			9
#define SQL_API_SQLENDTRAN			 1005
#define SQL_API_SQLERROR			   10
#define SQL_API_SQLEXECDIRECT		   11
#define SQL_API_SQLEXECUTE			   12
#define SQL_API_SQLFETCH			   13
#define SQL_API_SQLFETCHSCROLL		 1021
#define SQL_API_SQLFREECONNECT		   14
#define SQL_API_SQLFREEENV			   15
#define SQL_API_SQLFREEHANDLE		 1006
#define SQL_API_SQLFREESTMT			   16
#define SQL_API_SQLGETCONNECTATTR	 1007
#define SQL_API_SQLGETCURSORNAME	   17
#define SQL_API_SQLGETDATA			   43
#define SQL_API_SQLGETDESCFIELD		 1008
#define SQL_API_SQLGETDESCREC		 1009
#define SQL_API_SQLGETDIAGFIELD		 1010
#define SQL_API_SQLGETDIAGREC		 1011
#define SQL_API_SQLGETENVATTR		 1012
#define SQL_API_SQLGETFUNCTIONS		   44
#define SQL_API_SQLGETINFO			   45
#define SQL_API_SQLGETSTMTATTR		 1014
#define SQL_API_SQLGETTYPEINFO		   47
#define SQL_API_SQLNUMRESULTCOLS	   18
#define SQL_API_SQLPARAMDATA		   48
#define SQL_API_SQLPREPARE			   19
#define SQL_API_SQLPUTDATA			   49
#define SQL_API_SQLRELEASEENV		 1015		/* Obsolete? */
#define SQL_API_SQLROWCOUNT			   20
#define SQL_API_SQLSCROLLFETCH		 1021		/* Obsolete? */
#define SQL_API_SQLSETCONNECTATTR	 1016
#define SQL_API_SQLSETCURSORNAME	   21
#define SQL_API_SQLSETDESCFIELD		 1017
#define SQL_API_SQLSETDESCREC		 1018
#define SQL_API_SQLSETENVATTR		 1019
#define SQL_API_SQLSETSTMTATTR		 1020

/* information requested by GetInfo */
#define SQL_MAXIMUM_DRIVER_CONNECTIONS		0
#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES	1
#define SQL_DATA_SOURCE_NAME				2
#define SQL_FETCH_DIRECTION					8
#define SQL_SERVER_NAME					   13
#define SQL_DBMS_NAME					   17
#define SQL_DBMS_VERSION				   18
#define SQL_CURSOR_COMMIT_BEHAVIOR		   23
#define SQL_DATA_SOURCE_READ_ONLY		   25
#define SQL_DEFAULT_TRANSACTION_ISOLATION  26
#define SQL_IDENTIFIER_CASE				   28
#define SQL_MAXIMUM_COLUMN_NAME_LENGTH	   30
#define SQL_MAXIMUM_CURSOR_NAME_LENGTH	   31
#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH	   32
#define SQL_MAXIMUM_CATALOG_NAME_LENGTH    34
#define SQL_MAXIMUM_TABLE_NAME_LENGTH	   35
#define SQL_SCROLL_CONCURRENCY			   43
#define SQL_TRANSACTION_CAPABLE			   46
#define SQL_USER_NAME					   47
#define SQL_TRANSACTION_ISOLATION_OPTION   72
#define SQL_INTEGRITY					   73
#define SQL_GETDATA_EXTENSIONS			   81
#define SQL_NULL_COLLATION				   85
#define SQL_ALTER_TABLE					   86
#define SQL_ORDER_BY_COLUMNS_IN_SELECT	   90
#define SQL_SPECIAL_CHARACTERS			   94
#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY    97
#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY    99
#define SQL_MAXIMUM_COLUMNS_IN_SELECT	  100
#define SQL_MAXIMUM_COLUMNS_IN_TABLE	  101
#define SQL_MAXIMUM_STATEMENT_LENGTH	  105
#define SQL_MAXIMUM_TABLES_IN_SELECT	  106
#define SQL_MAXIMUM_USER_NAME_LENGTH	  107
#define SQL_OUTER_JOIN_CAPABILITIES		  115
#define SQL_CURSOR_SENSITIVITY			10001
#define SQL_DESCRIBE_PARAMETER			10002
#define SQL_CATALOG_NAME				10003
#define SQL_COLLATING_SEQUENCE			10004
#define SQL_MAXIMUM_IDENTIFIER_LENGTH	10005

/* S-resource attribute values for cursor sensitivity */
#define SQL_UNSPECIFIED			  0x00000000L
#define SQL_INSENSITIVE			  0x00000001L

/* null handle used when allocating HENV */
#define SQL_NULL_HANDLE					   0L

/* SQL_ALTER_TABLE bitmasks */
#define SQL_AT_ADD_COLUMN		  0x00000001L
#define SQL_AT_DROP_COLUMN		  0x00000002L
#define SQL_AT_ALTER_COLUMN		  0x00000004L
#define SQL_AT_ADD_CONSTRAINT	  0x00000008L
#define SQL_AT_DROP_CONSTRAINT	  0x00000010L

/* SQL_CURSOR_COMMIT_BEHAVIOR values */
#define SQL_CB_DELETE						0
#define SQL_CB_CLOSE						1
#define SQL_CB_PRESERVE						2

/* SQL_FETCH_DIRECTION bitmasks */
#define SQL_FD_FETCH_NEXT		  0x00000001L
#define SQL_FD_FETCH_FIRST		  0x00000002L
#define SQL_FD_FETCH_LAST		  0x00000004L
#define SQL_FD_FETCH_PRIOR		  0x00000008L
#define SQL_FD_FETCH_ABSOLUTE	  0x00000010L
#define SQL_FD_FETCH_RELATIVE	  0x00000020L

/* SQL_GETDATA_EXTENSIONS bitmasks */
#define SQL_GD_ANY_COLUMN		  0x00000001L
#define SQL_FD_ANY_ORDER		  0x00000002L

/* SQL_IDENTIFIER_CASE values */
#define SQL_IC_UPPER						1
#define SQL_IC_LOWER						2
#define SQL_IC_SENSITIVE					3
#define SQL_IC_MIXED						4

/* SQL_IDENTIFIER_CASE values */
#define SQL_NC_HIGH							1
#define SQL_NC_LOW							2

/* SQL_OUTER_JOIN_CAPABILITIES bitmasks */
#define SQL_OUTER_JOIN_LEFT					  0x00000001L
#define SQL_OUTER_JOIN_RIGHT				  0x00000002L
#define SQL_OUTER_JOIN_FULL					  0x00000004L
#define SQL_OUTER_JOIN_NESTED				  0x00000008L
#define SQL_OUTER_JOIN_NOT_ORDERED			  0x00000010L
#define SQL_OUTER_JOIN_INNER				  0x00000020L
#define SQL_OUTER_JOIN_ALL_COMPARISION_OPS	  0x00000040L

/* SQL_SCROLL_CONCURRENCY bitmasks */
#define SQL_SCCO_READ_ONLY					  0x00000001L
#define SQL_SCCO_LOCK						  0x00000002L
#define SQL_SCCO_OPT_ROWVER					  0x00000004L
#define SQL_SCCO_OPT_VALUES					  0x00000008L

/* SQL_IDENTIFIER_CASE values */
#define SQL_TC_NONE							0
#define SQL_TC_DML							1
#define SQL_TC_ALL							2
#define SQL_TC_DDL_COMMIT					3
#define SQL_TC_DDL_IGNORE					4

/* SQL_TRANSACTION_ISOLATION bitmasks */
#define SQL_TRANSACTION_READ_UNCOMMITTED	  0x00000001L
#define SQL_TRANSACTION_READ_COMMITTED		  0x00000002L
#define SQL_TRANSACTION_READ_REPEATABLE_READ  0x00000004L
#define SQL_TRANSACTION_READ_SERIALIZABLE	  0x00000008L



#define SQL_TRANSACTION_READ_UNCOMMITTED	0x00000001L
#define SQL_TRANSACTION_READ_UNCOMMITTED	0x00000001L
#define SQL_FD_FETCH_NEXT		  0x00000001L

/* CLI function signatures */

SQLRETURN SQLAllocConnect(SQLHENV EnvironmentHandle,
				SQLHDBC * ConnectionHandle);

SQLRETURN	SQLAllocEnv(SQLHENV * EnvironmentHandle);

SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType,
			   SQLINTEGER InputHandle,
			   SQLINTEGER * OutputHandle);

SQLRETURN SQLAllocStmt(SQLHDBC ConnectionHandle,
			 SQLSTMT * StatementHandle);

SQLRETURN SQLBindCol(SQLHSTMT StatementHandle,
		   SQLSMALLINT ColumnNumber,
		   SQLSMALLINT BufferType,
		   SQLPOINTER Data,
		   SQLINTEGER BufferLength,
		   SQLINTEGER * DataLength);

SQLRETURN SQLBindParam(SQLHSTMT StatementHandle,
			 SQLSMALLINT ParamNumber,
			 SQLSMALLINT BufferType,
			 SQLSMALLINT ParamType,
			 SQLINTEGER ParamLength,
			 SQLSMALLINT Scale,
			 SQLPOINTER Data,
			 SQLINTEGER * DataLength);

SQLRETURN	SQLCancel(SQLHSTMT StatementHandle);

SQLRETURN	SQLCloseCursor(SQLHSTMT StatementHandle);

SQLRETURN SQLColAttribute(SQLHSTMT StatementHandle,
				SQLSMALLINT ColumnNumber,
				SQLSMALLINT FieldIdentifier,
				SQLCHAR * CharacterAttribute,
				SQLINTEGER BufferLength,
				SQLINTEGER * AttributetLength,
				SQLINTEGER * NumericAttribute);

SQLRETURN SQLConnect(SQLHDBC ConnectionHandle,
		   SQLCHAR * ServerName,
		   SQLSMALLINT NameLength1,
		   SQLCHAR * UserName,
		   SQLSMALLINT NameLength2,
		   SQLCHAR * Authentication,
		   SQLSMALLINT NameLength3);

SQLRETURN SQLCopyDesc(SQLHDESC SourceDescHandle,
			SQLHDESC TargetDescHandle);

SQLRETURN SQLDataSources(SQLHENV EnvironmentHandle,
			   SQLSMALLINT Direction,
			   SQLCHAR * ServerName,
			   SQLSMALLINT BufferLength1,
			   SQLSMALLINT * NameLength1,
			   SQLCHAR * Description,
			   SQLSMALLINT BufferLength2,
			   SQLSMALLINT * NameLength2);

SQLRETURN SQLDescribeCol(SQLHSTMT StatementHandle,
			   SQLSMALLINT ColumnNumber,
			   SQLCHAR * ColumnName,
			   SQLSMALLINT BufferLength,
			   SQLSMALLINT * ColumnNameLength,
			   SQLSMALLINT * ColumnType,
			   SQLINTEGER * ColumnLength,
			   SQLSMALLINT * ColumnScale,
			   SQLSMALLINT * Nullable);

SQLRETURN	SQLDisconnect(SQLHDBC ConnectionHandle);

SQLRETURN SQLEndTran(SQLSMALLINT HandleType,
		   SQLHENV Handle,
		   SQLSMALLINT CompletionType);

SQLRETURN SQLError(SQLHENV EnvironmentHandle,
		 SQLHDBC ConnectionHandle,
		 SQLSTMT StatementHandle,
		 SQLCHAR * Sqlstate,
		 SQLINTEGER * NativeError,
		 SQLCHAR * MessageText,
		 SQLINTEGER BufferLength,
		 SQLINTEGER * TextLength);

SQLRETURN SQLExecDirect(SQLHSTMT StatementHandle,
			  SQLCHAR * StatementText,
			  SQLSMALLINT StringLength);

SQLRETURN	SQLExecute(SQLHSTMT StatementHandle);

SQLRETURN	SQLFetch(SQLHSTMT StatementHandle);

SQLRETURN SQLFetchScroll(SQLHSTMT StatementHandle,
			   SQLSMALLINT FetchOrientation,
			   SQLINTEGER FetchOffset);

SQLRETURN	SQLFreeConnect(SQLHDBC ConnectionHandle);

SQLRETURN	SQLFreeEnv(SQLHENV EnvironmentHandle);

SQLRETURN SQLFreeHandle(SQLSMALLINT HandleType,
			  SQLINTEGER Handle);

SQLRETURN	SQLFreeStmt(SQLHSTMT StatementHandle);

SQLRETURN SQLGetConnectAttr(SQLHDBC ConnectionHandle,
				  SQLINTEGER Attribute,
				  SQLPOINTER Value,
				  SQLINTEGER BufferLength,
				  SQLINTEGER * StringLength);

SQLRETURN SQLGetCursorName(SQLHSTMT StatementHandle,
				 SQLCHAR * CursorName,
				 SQLSMALLINT BufferLength,
				 SQLSMALLINT * NameLength);

SQLRETURN SQLGetData(SQLHSTMT StatementHandle,
		   SQLSMALLINT ColumnNumber,
		   SQLSMALLINT TargetType,
		   SQLPOINTER TargetValue,
		   SQLINTEGER BufferLength,
		   SQLINTEGER * IndicatorValue);

SQLRETURN SQLGetDescField(SQLHDESC DescriptorHandle,
				SQLSMALLINT RecordNumber,
				SQLSMALLINT FieldIdentifier,
				SQLPOINTER Value,
				SQLINTEGER BufferLength,
				SQLINTEGER * StringLength);

SQLRETURN SQLGetDescRec(SQLHDESC DescriptorHandle,
			  SQLSMALLINT RecordNumber,
			  SQLCHAR * Name,
			  SQLSMALLINT BufferLength,
			  SQLSMALLINT * StringLength,
			  SQLSMALLINT * Type,
			  SQLSMALLINT * SubType,
			  SQLINTEGER * Length,
			  SQLSMALLINT * Precision,
			  SQLSMALLINT * Scale,
			  SQLSMALLINT * Nullable);

SQLRETURN SQLGetDiagField(SQLSMALLINT HandleType,
				SQLINTEGER Handle,
				SQLSMALLINT RecordNumber,
				SQLSMALLINT DiagIdentifier,
				SQLPOINTER DiagInfo,
				SQLSMALLINT BufferLength,
				SQLSMALLINT * StringLength);


SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType,
			  SQLINTEGER Handle,
			  SQLSMALLINT RecordNumber,
			  SQLCHAR * Sqlstate,
			  SQLINTEGER * NativeError,
			  SQLCHAR * MessageText,
			  SQLSMALLINT BufferLength,
			  SQLSMALLINT * StringLength);

SQLRETURN SQLGetEnvAttr(SQLHENV EnvironmentHandle,
			  SQLINTEGER Attribute,
			  SQLPOINTER Value,
			  SQLINTEGER BufferLength,
			  SQLINTEGER * StringLength);

SQLRETURN SQLGetFunctions(SQLHDBC ConnectionHandle,
				SQLSMALLINT FunctionId,
				SQLSMALLINT * Supported);

SQLRETURN SQLGetInfo(SQLHDBC ConnectionHandle,
		   SQLSMALLINT InfoType,
		   SQLPOINTER InfoValue,
		   SQLSMALLINT BufferLength,
		   SQLSMALLINT * StringLength);

SQLRETURN SQLGetStmtAttr(SQLHSTMT StatementHandle,
			   SQLINTEGER Attribute,
			   SQLPOINTER Value,
			   SQLINTEGER BufferLength,
			   SQLINTEGER * StringLength);

SQLRETURN SQLGetTypeInfo(SQLHSTMT StatementHandle,
			   SQLSMALLINT DataType);

SQLRETURN SQLNumResultCols(SQLHSTMT StatementHandle,
				 SQLINTEGER * ColumnCount);

SQLRETURN SQLParamData(SQLHSTMT StatementHandle,
			 SQLPOINTER * Value);

SQLRETURN SQLPrepare(SQLHSTMT StatementHandle,
		   SQLCHAR * StatementText,
		   SQLSMALLINT StringLength);


SQLRETURN SQLPutData(SQLHSTMT StatementHandle,
		   SQLPOINTER Data,
		   SQLINTEGER StringLength);

SQLRETURN SQLRowCount(SQLHSTMT StatementHandle,
			SQLINTEGER * RowCount);

SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle,
				  SQLINTEGER AttributeCursorName,
				  SQLPOINTER Value,
				  SQLINTEGER StringLength);

SQLRETURN SQLSetCursorName(SQLHSTMT StatementHandle,
				 SQLCHAR * CursorName,
				 SQLSMALLINT NameLength);

SQLRETURN SQLSetDescField(SQLHDESC DescriptorHandle,
				SQLSMALLINT RecordNumber,
				SQLSMALLINT FieldIdentifier,
				SQLPOINTER Value, SQLINTEGER BufferLength);

SQLRETURN SQLSetDescRec(SQLHDESC DescriptorHandle,
			  SQLSMALLINT RecordNumber,
			  SQLSMALLINT Type,
			  SQLSMALLINT SubType,
			  SQLINTEGER Length,
			  SQLSMALLINT Precision,
			  SQLSMALLINT Scale,
			  SQLPOINTER Data,
			  SQLINTEGER * StringLength,
			  SQLSMALLINT * Indicator);

SQLRETURN SQLSetEnvAttr(SQLHENV EnvironmentHandle,
			  SQLINTEGER Attribute,
			  SQLPOINTER Value,
			  SQLINTEGER StringLength);

SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle,
			   SQLINTEGER Attribute,
			   SQLPOINTER Value,
			   SQLINTEGER StringLength);

/* These are in SQL3 from August 1994
 * but not in Date and Darwen, 1997
 * - Thomas Lockhart 1999-06-17

SQLRETURN  SQLLanguages(SQLHSTMT StatementHandle);

SQLRETURN  SQLReleaseEnv(SQLHENV EnvironmentHandle);

SQLRETURN  SQLScrollFetch(SQLHSTMT StatementHandle,
			  SQLINTEGER FetchOrientation,
			  SQLINTEGER FetchOffset);
*/
