*** empty log message ***
[csql.git] / src / odbc / odbcStmt.h
blobc307fa3aa80b2d40b0f5cc0278c875ff8246b2b2
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
58 // Statement Attributes
60 // METHODS
62 // State Transition
63 SQLRETURN chkStateForSQLFreeHandle( void );
64 SQLRETURN chkStateForSQLFreeStmt( void );
65 SQLRETURN chkStateForSQLBindCol( void );
66 SQLRETURN chkStateForSQLBindParameter( void );
68 SQLRETURN chkStateForSQLPrepare( void );
69 SQLRETURN chkStateForSQLExecute( void );
70 SQLRETURN chkStateForSQLExecDirect( void );
71 SQLRETURN chkStateForSQLFetch( void );
72 SQLRETURN chkStateForSQLCloseCursor( void );
74 SQLRETURN chkStateForSQLNumParams( void );
75 SQLRETURN chkStateForSQLNumResultCols( void );
76 SQLRETURN chkStateForSQLRowCount( void );
77 SQLRETURN chkStateForSQLDescribeCol( void );
78 SQLRETURN chkStateForSQLDescribeParam(void);
80 SQLRETURN chkStateForSQLSetCursorName( void );
81 SQLRETURN chkStateForSQLGetCursorName( void );
84 // ODBC API's
85 static SQLRETURN SQLAllocHandle(
86 SQLHANDLE inputHandle, // IN
87 SQLHANDLE *outputHandle );// OUT
89 static SQLRETURN SQLFreeHandle(
90 SQLHANDLE inputHandle); // IN
92 SQLRETURN SQLFreeStmt(
93 SQLUSMALLINT option); // IN
95 SQLRETURN SQLBindCol(
96 SQLUSMALLINT columnNumber, // IN
97 SQLSMALLINT targetType, // IN
98 SQLPOINTER targetValue, // OUT
99 SQLINTEGER bufferLength, // IN
100 SQLINTEGER *ind); // IN_OUT
102 SQLRETURN SQLBindParameter(
103 SQLUSMALLINT parameterNumber,//IN
104 SQLSMALLINT inputOutputType,// IN
105 SQLSMALLINT valueType, // IN
106 SQLSMALLINT parameterType, // IN
107 SQLUINTEGER lengthPrecision,// IN
108 SQLSMALLINT parameterScale, // IN
109 SQLPOINTER parameterValue, // OUT
110 SQLINTEGER bufferLength, // IN
111 SQLINTEGER *ind); // IN_OUT
113 SQLRETURN SQLPrepare(
114 SQLCHAR *statementText, // IN
115 SQLINTEGER textLength); // IN
117 SQLRETURN SQLExecute( void );
119 SQLRETURN SQLExecDirect(
120 SQLCHAR *statementText, // IN
121 SQLINTEGER textLength); // IN
123 SQLRETURN SQLSetStmtAttr(
124 SQLINTEGER Option, //IN
125 SQLPOINTER Value, //IN
126 SQLINTEGER stringLength); //IN
128 SQLRETURN SQLFetch();
130 SQLRETURN SQLCloseCursor();
132 SQLRETURN SQLSetCursorName(
133 SQLCHAR *cursorName, // IN
134 SQLSMALLINT nameLength); // OUT
136 SQLRETURN SQLGetCursorName(
137 SQLCHAR *cursorName, // OUT
138 SQLSMALLINT bufferLength, // IN
139 SQLSMALLINT *nameLength); // OUT
141 SQLRETURN SQLNumResultCols(
142 SQLSMALLINT *columnCount); // OUT
144 SQLRETURN SQLRowCount(
145 SQLINTEGER *rowCount); // OUT
147 SQLRETURN SQLDescribeCol(
148 SQLUSMALLINT columnNumber, // IN
149 SQLCHAR *columnName, // OUT
150 SQLSMALLINT bufferLength, // IN
151 SQLSMALLINT *nameLength, // OUT
152 SQLSMALLINT *dataType, // OUT
153 SQLUINTEGER *columnSize, // OUT
154 SQLSMALLINT *decimalDigits,// OUT
155 SQLSMALLINT *nullable); // OUT
157 SQLRETURN SQLColAttribute(
158 SQLUSMALLINT columnNumber, //IN
159 SQLUSMALLINT fieldIdentifier,//IN
160 SQLPOINTER characterAttributePtr,//OUT
161 SQLSMALLINT bufferLength, //IN
162 SQLSMALLINT *stringLengthPtr, //OUT
163 SQLPOINTER numericAttributePtr); //OUT
165 SQLRETURN SQLNumParams(
166 SQLSMALLINT * ParameterCountPtr); //OUT
168 SQLRETURN SQLDescribeParam(
169 SQLUSMALLINT paramNumber, //IN
170 SQLSMALLINT * dataType, //OUT
171 SQLUINTEGER * paramSize, //OUT
172 SQLSMALLINT * decimalDigits, //OUT
173 SQLSMALLINT * isNullable); //OUT
175 // Other Methods
176 void resetStmt( void );
179 #endif // _ODBC_STMT_H_