3 // Description: Statement Handle manager.
8 // State's of Statement Handle.
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
28 CSqlOdbcStmt( void ); // Should not create obj without using SQLAllocHandle
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.
37 SQLCHAR cursorName_
[ SQL_MAX_CURSOR_NAME_LEN
];
40 SQLUINTEGER fetchMode_
; // SQL_FETCH_SINGLE_TUPLE or SQL_FETCH_MULTIPLE_TUPLES
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
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 );
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
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
177 SQLCHAR
* CatalogName
,
178 SQLCHAR
* SchemaName
,
180 SQLCHAR
* TableType
);
182 SQLRETURN
SQLColumns(
183 SQLCHAR
* CatalogName
,
184 SQLCHAR
* SchemaName
,
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
,
198 SQLLEN
* StrLen_or_IndPtr
);
200 SQLRETURN
SQLGetTypeInfo(
201 SQLSMALLINT DataType
);
203 SQLRETURN
SQLStatistics(
204 SQLCHAR
* CatalogName
,
205 SQLCHAR
* SchemaName
,
208 SQLUSMALLINT Reserved
);
210 SQLRETURN
SQLForeignKeys(
211 SQLCHAR
* PKTableName
,
212 SQLCHAR
* FKTableName
);
215 void resetStmt( void );
216 int getNumResultset(ResultSetPlan plan
);
219 #endif // _ODBC_STMT_H_