+++ /dev/null
-/* -*- C -*- */
-/* The first example illustrates creating a table, adding some data
- * to it, and selecting the inserted data. The second example shows
- * interactive ad hoc query processing.
- *
- * Actual applications include more complete error checking following
- * calls to SQL/CLI routines. That material is omitted from this
- * Appendix for the sake of clarity.
- *
- * This file is adapted for PostgreSQL
- * from the CLI Annex in the SQL98 August 1994 draft standard.
- * Thomas G. Lockhart 1999-06-16
- */
-
-/*
- * B.1 Create table, insert, select
- *
- * This example function creates a table, inserts data into the table,
- * and selects the inserted data.
- *
- * This example illustrates the execution of SQL statement text
- * both using the Prepare() and Execute() method and using the
- * ExecDirect() method. The example also illustrates both the case
- * where the application uses the automatically-generated descriptors
- * and the case where the application allocates a descriptor of its
- * own and associates this descriptor with the SQL statement.
- *
- * Code comments include the equivalent statements in embedded SQL
- * to show how embedded SQL operations correspond to SQL/CLI function
- * calls.
- */
-
-#include "sqlcli.h"
-#include <string.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int print_err(SQLSMALLINT handletype, SQLINTEGER handle);
-
-int
-example1(SQLCHAR * server, SQLCHAR * uid, SQLCHAR * authen)
-{
- SQLHENV henv;
- SQLHDBC hdbc;
- SQLHDESC hdesc;
- SQLHDESC hdesc1;
- SQLHDESC hdesc2;
- SQLHSTMT hstmt;
- SQLINTEGER id;
- SQLSMALLINT idind;
- SQLCHAR name[51];
- SQLINTEGER namelen;
- SQLSMALLINT nameind;
-
- /* EXEC SQL CONNECT TO :server USER :uid; */
-
- /* allocate an environment handle */
- SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
- /* allocate a connection handle */
- SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
-
- /* connect to database */
- if (SQLConnect(hdbc, server, SQL_NTS, uid, SQL_NTS,
- authen, SQL_NTS)
- != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_DBC, hdbc));
-
- /* allocate a statement handle */
- SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
-
- /* EXEC SQL CREATE TABLE NAMEID (ID integer, NAME varchar(50)); */
- {
- SQLCHAR create[] = "CREATE TABLE NAMEID (ID integer,"
- " NAME varchar(50))";
-
- /* execute the CREATE TABLE statement */
- if (SQLExecDirect(hstmt, create, SQL_NTS) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- }
-
- /* EXEC SQL COMMIT WORK; */
- /* commit CREATE TABLE */
- SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT);
- /* EXEC SQL INSERT INTO NAMEID VALUES ( :id, :name ); */
- {
- SQLCHAR insert[] = "INSERT INTO NAMEID VALUES (?, ?)";
-
- /* show the use of SQLPrepare/SQLExecute method */
- /* prepare the INSERT */
- if (SQLPrepare(hstmt, insert, SQL_NTS) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- /* application parameter descriptor */
- SQLGetStmtAttr(hstmt, SQL_ATTR_APP_PARAM_
- DESC, &hdesc1, 0L,
- (SQLINTEGER *) NULL);
- SQLSetDescRec(hdesc1, 1, SQL_INTEGER, 0, 0L, 0, 0,
- (SQLPOINTER) & id, (SQLINTEGER *) NULL, (SQLSMALLINT *) NULL);
- SQLSetDescRec(hdesc1, 2, SQL_CHAR, 0, 0L, 0, 0,
- (SQLPOINTER) name, (SQLINTEGER *) NULL,
- (SQLSMALLINT *) NULL);
- /* implementation parameter descriptor */
- SQLGetStmtAttr(hstmt, SQL_ATTR_IMP_PARAM_
- DESC, &hdesc2, 0L,
- (SQLINTEGER *) NULL);
- SQLSetDescRec(hdesc2, 1, SQL_INTEGER, 0, 0L, 0, 0,
- (SQLPOINTER) NULL, (SQLINTEGER *) NULL,
- (SQLSMALLINT *) NULL);
- SQLSetDescRec(hdesc2, 2, SQL_VARCHAR, 0, 50L, 0, 0,
- (SQLPOINTER) NULL, (SQLINTEGER *) NULL,
- (SQLSMALLINT *) NULL);
-
- /* assign parameter values and execute the INSERT */
- id = 500;
- (void) strcpy(name, "Babbage");
- if (SQLExecute(hstmt) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- }
- /* EXEC SQL COMMIT WORK; */
- SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT);
- /* commit inserts */
-
- /* EXEC SQL DECLARE c1 CURSOR FOR SELECT ID, NAME FROM NAMEID; */
- /* EXEC SQL OPEN c1; */
- /* The application doesn't specify "declare c1 cursor for" */
- {
- SQLCHAR select[] = "select ID, NAME from NAMEID";
-
- if (SQLExecDirect(hstmt, select, SQL_NTS) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
- }
-
- /* EXEC SQL FETCH c1 INTO :id, :name; */
- /* this time, explicitly allocate an application row descriptor */
- SQLAllocHandle(SQL_HANDLE_DESC, hdbc, &hdesc);
- SQLSetDescRec(hdesc, 1, SQL_INTEGER, 0, 0L, 0, 0,
- (SQLPOINTER) & id, (SQLINTEGER *) NULL, (SQLSMALLINT *) & idind);
-
- SQLSetDescRec(hdesc, 2, SQL_
- CHAR, 0, (SQLINTEGER) sizeof(name),
- 0, 0, (SQLPOINTER) & name, (SQLINTEGER *) & namelen,
- (SQLSMALLINT *) & nameind);
- /* associate descriptor with statement handle */
- SQLSetStmtAttr(hstmt, SQL_ATTR_APP_ROW_DESC, &hdesc, 0);
- /* execute the fetch */
- SQLFetch(hstmt);
-
- /* EXEC SQL COMMIT WORK; */
- /* commit the transaction */
- SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT);
-
- /* EXEC SQL CLOSE c1; */
- SQLClose(hstmt);
- /* free the statement handle */
- SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
-
- /* EXEC SQL DISCONNECT; */
- /* disconnect from the database */
- SQLDisconnect(hdbc);
- /* free descriptor handle */
- SQLFreeHandle(SQL_HANDLE_DESC, hdesc);
- /* free descriptor handle */
- SQLFreeHandle(SQL_HANDLE_DESC, hdesc1);
- /* free descriptor handle */
- SQLFreeHandle(SQL_HANDLE_DESC, hdesc2);
- /* free connection handle */
- SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
- /* free environment handle */
- SQLFreeHandle(SQL_HANDLE_ENV, henv);
-
- return (0);
-}
+++ /dev/null
-/* -*- C -*- */
-/* The first example illustrates creating a table, adding some data
- * to it, and selecting the inserted data. The second example shows
- * interactive ad hoc query processing.
- *
- * Actual applications include more complete error checking following
- * calls to SQL/CLI routines. That material is omitted from this
- * Appendix for the sake of clarity.
- *
- * This file is adapted for PostgreSQL
- * from the CLI Annex in the SQL98 August 1994 draft standard.
- * Thomas G. Lockhart 1999-06-16
- */
-
-/*
- * B.2 Interactive Query
- *
- * This sample function uses the concise CLI functions to
- * interactively execute a SQL statement supplied as an argument.
- * In the case where the user types a SELECT statement, the function
- * fetches and displays all rows of the result set.
- *
- * This example illustrates the use of GetDiagField() to identify
- * the type of SQL statement executed and, for SQL statements where
- * the row count is defined on all implementations, the use of
- * GetDiagField() to obtain the row count.
- */
-
-/*
- * Sample program - uses concise CLI functions to execute
- * interactively an ad hoc statement.
- */
-#include "sqlcli.h"
-#include <string.h>
-#include <stdlib.h>
-
-#define MAXCOLS 100
-
-#define max(a,b) (a>b?a:b)
-
-int print_err(SQLSMALLINT handletype, SQLINTEGER handle);
-int build_indicator_message(SQLCHAR * errmsg,
- SQLPOINTER * data,
- SQLINTEGER collen,
- SQLINTEGER * outlen,
- SQLSMALLINT colnum);
-
-SQLINTEGER display_length(SQLSMALLINT coltype,
- SQLINTEGER collen,
- SQLCHAR * colname);
-
-example2(SQLCHAR * server, SQLCHAR * uid, SQLCHAR * authen, SQLCHAR * sqlstr)
-{
- int i;
- SQLHENV henv;
- SQLHDBC hdbc;
- SQLHSTMT hstmt;
- SQLCHAR errmsg[256];
- SQLCHAR colname[64];
- SQLSMALLINT coltype;
- SQLSMALLINT colnamelen;
- SQLSMALLINT nullable;
- SQLINTEGER collen[MAXCOLS];
- SQLSMALLINT scale;
- SQLINTEGER outlen[MAXCOLS];
- SQLCHAR *data[MAXCOLS];
- SQLSMALLINT nresultcols;
- SQLINTEGER rowcount;
- SQLINTEGER stmttype;
- SQLRETURN rc;
-
- /* allocate an environment handle */
- SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
-
- /* allocate a connection handle */
- SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
-
- /* connect to database */
- if (SQLConnect(hdbc, server, SQL_NTS, uid, SQL_NTS, authen, SQL_NTS)
- != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_DBC, hdbc));
-
- /* allocate a statement handle */
- SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
-
- /* execute the SQL statement */
- if (SQLExecDirect(hstmt, sqlstr, SQL_NTS) != SQL_SUCCESS)
- return (print_err(SQL_HANDLE_STMT, hstmt));
-
- /* see what kind of statement it was */
- SQLGetDiagField(SQL_HANDLE_STMT, hstmt, 0,
- SQL_DIAG_DYNAMIC_FUNCTION_CODE,
- (SQLPOINTER) & stmttype, 0, (SQLSMALLINT *) NULL);
-
- switch (stmttype)
- {
- /* SELECT statement */
- case SQL_SELECT_CURSOR:
- /* determine number of result columns */
- SQLNumResultCols(hstmt, &nresultcols);
- /* display column names */
- for (i = 0; i < nresultcols; i++)
- {
- SQLDescribeCol(hstmt, i + 1, colname, sizeof(colname),
- &colnamelen, &coltype, &collen[i], &scale, &nullable);
-
- /*
- * assume there is a display_length function which
- * computes correct length given the data type
- */
- collen[i] = display_length(coltype, collen[i], colname);
- (void) printf("%*.*s", collen[i], collen[i], colname);
- /* allocate memory to bind column */
- data[i] = (SQLCHAR *) malloc(collen[i]);
-
- /*
- * bind columns to program vars, converting all types to
- * CHAR
- */
- SQLBindCol(hstmt, i + 1, SQL_CHAR, data[i], collen[i],
- &outlen[i]);
- }
- /* display result rows */
- while ((rc = SQLFetch(hstmt)) != SQL_ERROR)
- {
- errmsg[0] = '\0';
- if (rc == SQL_SUCCESS_WITH_INFO)
- {
- for (i = 0; i < nresultcols; i++)
- {
- if (outlen[i] == SQL_NULL_DATA || outlen[i] >= collen[i])
- build_indicator_message(errmsg,
- (SQLPOINTER *) & data[i], collen[i],
- &outlen[i], i);
- (void) printf("%*.*s ", outlen[i], outlen[i],
- data[i]);
- } /* for all columns in this row */
- /* print any truncation messages */
- (void) printf("\n%s", errmsg);
- }
- } /* while rows to fetch */
- SQLClose(hstmt);
- break;
-
- /* searched DELETE, INSERT or searched UPDATE statement */
- case SQL_DELETE_WHERE:
- case SQL_INSERT:
- case SQL_UPDATE_WHERE:
- /* check rowcount */
- SQLGetDiagField(SQL_HANDLE_STMT, hstmt, 0,
- SQL_DIAG_ROW_COUNT, (SQLPOINTER) & rowcount, 0,
- (SQLSMALLINT *) NULL);
- if (SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT)
- == SQL_SUCCESS)
- (void) printf("Operation successful\n");
- else
- (void) printf("Operation failed\n");
- (void) printf("%ld rows affected\n", rowcount);
- break;
-
- /* other statements */
- case SQL_ALTER_TABLE:
- case SQL_CREATE_TABLE:
- case SQL_CREATE_VIEW:
- case SQL_DROP_TABLE:
- case SQL_DROP_VIEW:
- case SQL_DYNAMIC_DELETE_CURSOR:
- case SQL_DYNAMIC_UPDATE_CURSOR:
- case SQL_GRANT:
- case SQL_REVOKE:
- if (SQLEndTran(SQL_HANDLE_ENV, henv, SQL_COMMIT)
- == SQL_SUCCESS)
- (void) printf("Operation successful\n");
- else
- (void) printf("Operation failed\n");
- break;
-
- /* implementation-defined statement */
- default:
- (void) printf("Statement type=%ld\n", stmttype);
- break;
- }
-
- /* free data buffers */
- for (i = 0; i < nresultcols; i++)
- (void) free(data[i]);
-
- /* free statement handle */
- SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
- /* disconnect from database */
- SQLDisconnect(hdbc);
- /* free connection handle */
- SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
- /* free environment handle */
- SQLFreeHandle(SQL_HANDLE_ENV, henv);
-
- return (0);
-}
-
-/***********************************************************
- The following functions are given for completeness, but are
- not relevant for understanding the database processing
- nature of CLI
-***********************************************************/
-
-#define MAX_NUM_PRECISION 15
-/*#define max length of char string representation of no. as:
-
- = max(precision) + leading sign + E + exp sign + max exp length
- = 15 + 1 + 1 + 1 + 2
- = 15 + 5
-*/
-#define MAX_NUM_STRING_SIZE (MAX_NUM_PRECISION + 5)
-
-SQLINTEGER
-display_length(SQLSMALLINT coltype, SQLINTEGER collen,
- SQLCHAR * colname)
-{
- switch (coltype)
- {
-
- case SQL_VARCHAR:
- case SQL_CHAR:
- return (max(collen, strlen((char *) colname)));
- break;
-
- case SQL_FLOAT:
- case SQL_DOUBLE:
- case SQL_NUMERIC:
- case SQL_REAL:
- case SQL_DECIMAL:
- return (max(MAX_NUM_STRING_SIZE, strlen((char *) colname)));
- break;
-
- case SQL_DATETIME:
- return (max(SQL_TIMESTAMP_LEN, strlen((char *) colname)));
- break;
-
- case SQL_INTEGER:
- return (max(10, strlen((char *) colname)));
- break;
-
- case SQL_SMALLINT:
- return (max(5, strlen((char *) colname)));
- break;
-
- default:
- (void) printf("Unknown datatype, %d\n", coltype);
- return (0);
- break;
- }
-}
-
-int
-build_indicator_message(SQLCHAR * errmsg, SQLPOINTER * data,
- SQLINTEGER collen, SQLINTEGER * outlen, SQLSMALLINT colnum)
-{
- if (*outlen == SQL_NULL_DATA)
- {
- (void) strcpy((char *) data, "NULL");
- *outlen = 4;
- }
- else
- {
- sprintf((char *) errmsg + strlen((char *) errmsg),
- "%d chars truncated, col %d\n", *outlen - collen + 1,
- colnum);
- *outlen = 255;
- }
-}
+++ /dev/null
-/* -*- 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);
-*/