cleanup
[csql.git] / src / odbc / odbcStmt.h
blobf2ca551e5c82d66c1616b3d0d5567d94e272be43
2 // Class CSqlOdbcStmt
3 // Description: Statement Handle manager.
5 #ifndef _ODBC_STMT_H_
6 #define _ODBC_STMT_H_
8 // State's of Statement Handle.
9 typedef enum
11 S0, // hstmt in unallocated state
12 S1, // hstmt in allocated state
13 S2, // prepared hstmt - no result set will be genarated
14 S3, // prepared hstmt - result set will be genarated
15 S4, // executed hstmt - no result set generated.
16 S5, // executed hstmt - result set generated.
17 S6, // cursor positioned with SQLFetch
18 S7, // cursor positioned with SQLExtendedFetch
19 S8, // Function needs data - SQLParamData not called
20 S9, // Function needs data - SQLPutData not called
21 S10, // Function needs data - SQLPutData called
22 S11, // Still Executing
23 S12 // Asyncronous cancel
24 } StmtState_t ;
26 class CSqlOdbcStmt
28 CSqlOdbcStmt( void ); // Should not create obj without using SQLAllocHandle
30 public:
31 // Top 2 variable declaration should not be moved down.
32 int handleType_; // Handle type.
33 CSqlOdbcError err_; // Last error info.
35 CSqlOdbcDbc *parentDbc_; // Parent Connection Handle.
36 StmtState_t state_;
37 SQLCHAR cursorName_[ SQL_MAX_CURSOR_NAME_LEN ];
38 int rowsAffected_;
39 bool isPrepared_;
40 SQLUINTEGER fetchMode_; // SQL_FETCH_SINGLE_TUPLE or SQL_FETCH_MULTIPLE_TUPLES
42 // Descriptor Lists
43 bool isParamBound_;
44 CSqlOdbcDescList ard_; // Application Row Descriptor
45 // Bound columns using SQLBindCol()
47 CSqlOdbcDescList ird_; // Implimentation Row Descriptor
48 // populated during SQLPrepare()
50 CSqlOdbcDescList apd_; // Application Parameter Descriptor
51 // Bound paramenters using SQLBindParameter()
53 CSqlOdbcDescList ipd_; // Implimentation Parameter Descriptor
54 // populated during SQLPrepare()
56 AbsSqlStatement *fsqlStmt_; // CSQL
57 FieldInfo *fInfo; // used by all methods when retrieving field info
59 // Statement Attributes
61 // METHODS
63 // State Transition
64 SQLRETURN chkStateForSQLFreeHandle( void );
65 SQLRETURN chkStateForSQLFreeStmt( void );
66 SQLRETURN chkStateForSQLBindCol( void );
67 SQLRETURN chkStateForSQLBindParameter( void );
69 SQLRETURN chkStateForSQLPrepare( void );
70 SQLRETURN chkStateForSQLExecute( void );
71 SQLRETURN chkStateForSQLExecDirect( void );
72 SQLRETURN chkStateForSQLFetch( void );
73 SQLRETURN chkStateForSQLCloseCursor( void );
75 SQLRETURN chkStateForSQLNumParams( void );
76 SQLRETURN chkStateForSQLNumResultCols( void );
77 SQLRETURN chkStateForSQLRowCount( void );
78 SQLRETURN chkStateForSQLDescribeCol( void );
79 SQLRETURN chkStateForSQLDescribeParam(void);
81 SQLRETURN chkStateForSQLSetCursorName( void );
82 SQLRETURN chkStateForSQLGetCursorName( void );
85 // ODBC API's
86 static SQLRETURN SQLAllocHandle(
87 SQLHANDLE inputHandle, // IN
88 SQLHANDLE *outputHandle );// OUT
90 static SQLRETURN SQLFreeHandle(
91 SQLHANDLE inputHandle); // IN
93 SQLRETURN SQLFreeStmt(
94 SQLUSMALLINT option); // IN
96 SQLRETURN SQLBindCol(
97 SQLUSMALLINT columnNumber, // IN
98 SQLSMALLINT targetType, // IN
99 SQLPOINTER targetValue, // OUT
100 SQLINTEGER bufferLength, // IN
101 SQLINTEGER *ind); // IN_OUT
103 SQLRETURN SQLBindParameter(
104 SQLUSMALLINT parameterNumber,//IN
105 SQLSMALLINT inputOutputType,// IN
106 SQLSMALLINT valueType, // IN
107 SQLSMALLINT parameterType, // IN
108 SQLUINTEGER lengthPrecision,// IN
109 SQLSMALLINT parameterScale, // IN
110 SQLPOINTER parameterValue, // OUT
111 SQLINTEGER bufferLength, // IN
112 SQLINTEGER *ind); // IN_OUT
114 SQLRETURN SQLPrepare(
115 SQLCHAR *statementText, // IN
116 SQLINTEGER textLength); // IN
118 SQLRETURN SQLExecute( void );
120 SQLRETURN SQLExecDirect(
121 SQLCHAR *statementText, // IN
122 SQLINTEGER textLength); // IN
124 SQLRETURN SQLSetStmtAttr(
125 SQLINTEGER Option, //IN
126 SQLPOINTER Value, //IN
127 SQLINTEGER stringLength); //IN
129 SQLRETURN SQLFetch();
131 SQLRETURN SQLCloseCursor();
133 SQLRETURN SQLSetCursorName(
134 SQLCHAR *cursorName, // IN
135 SQLSMALLINT nameLength); // OUT
137 SQLRETURN SQLGetCursorName(
138 SQLCHAR *cursorName, // OUT
139 SQLSMALLINT bufferLength, // IN
140 SQLSMALLINT *nameLength); // OUT
142 SQLRETURN SQLNumResultCols(
143 SQLSMALLINT *columnCount); // OUT
145 SQLRETURN SQLRowCount(
146 SQLINTEGER *rowCount); // OUT
148 SQLRETURN SQLDescribeCol(
149 SQLUSMALLINT columnNumber, // IN
150 SQLCHAR *columnName, // OUT
151 SQLSMALLINT bufferLength, // IN
152 SQLSMALLINT *nameLength, // OUT
153 SQLSMALLINT *dataType, // OUT
154 SQLUINTEGER *columnSize, // OUT
155 SQLSMALLINT *decimalDigits,// OUT
156 SQLSMALLINT *nullable); // OUT
158 SQLRETURN SQLColAttribute(
159 SQLUSMALLINT columnNumber, //IN
160 SQLUSMALLINT fieldIdentifier,//IN
161 SQLPOINTER characterAttributePtr,//OUT
162 SQLSMALLINT bufferLength, //IN
163 SQLSMALLINT *stringLengthPtr, //OUT
164 SQLPOINTER numericAttributePtr); //OUT
166 SQLRETURN SQLNumParams(
167 SQLSMALLINT * ParameterCountPtr); //OUT
169 SQLRETURN SQLDescribeParam(
170 SQLUSMALLINT paramNumber, //IN
171 SQLSMALLINT * dataType, //OUT
172 SQLUINTEGER * paramSize, //OUT
173 SQLSMALLINT * decimalDigits, //OUT
174 SQLSMALLINT * isNullable); //OUT
176 SQLRETURN SQLTables(
177 SQLCHAR * CatalogName,
178 SQLCHAR * SchemaName,
179 SQLCHAR * TableName,
180 SQLCHAR * TableType);
182 SQLRETURN SQLColumns(
183 SQLCHAR * CatalogName,
184 SQLCHAR * SchemaName,
185 SQLCHAR * TableName,
186 SQLCHAR * ColumnName );
188 SQLRETURN SQLPrimaryKeys(
189 SQLCHAR * CatalogName,
190 SQLCHAR * SchemaName,
191 SQLCHAR * TableName);
193 SQLRETURN SQLGetData(
194 SQLUSMALLINT ColumnNumber,
195 SQLSMALLINT TargetType,
196 SQLPOINTER TargetValuePtr,
197 SQLLEN BufferLength,
198 SQLLEN * StrLen_or_IndPtr);
200 SQLRETURN SQLGetTypeInfo(
201 SQLSMALLINT DataType);
203 SQLRETURN SQLStatistics(
204 SQLCHAR * CatalogName,
205 SQLCHAR * SchemaName,
206 SQLCHAR * TableName,
207 SQLUSMALLINT Unique,
208 SQLUSMALLINT Reserved);
210 SQLRETURN SQLForeignKeys(
211 SQLCHAR * PKTableName,
212 SQLCHAR * FKTableName);
214 // Other Methods
215 void resetStmt( void );
216 int getNumResultset(ResultSetPlan plan);
219 #endif // _ODBC_STMT_H_