advertisement
echo "ERROR select: $msg\n"; exit;
}
$rownumber = 0; while (odbc_fetch_row($Result1))
{
$data1 = odbc_result($Result1, 1);
$data2 = odbc_result($Result1, 2);
$data3 = odbc_result($Result1, 3);
$len2 = strlen($data2);
$len3 = strlen($data3); print "\n==========================================\n"; print "Row $rownumber....\n";
$rownumber++; print "data1 = ".$data1."\n"; print "-------\n"; print "data2 = \n";
// print $data2; // Output is omitted because this is binary data.
print "\n"; print "dataLen2 = [$len2]\n"; print "-------\n"; print "data3 = \n"; print $data3; print "\n"; print "dataLen3 = [$len3]\n";
} odbc_commit($Connection);
@odbc_close($Connection);
?>
Other Changes
Other Changes
This section describes changes except data types.
SQLCloseCursor
You can call functions in the following order because there isn’t ODBC state machine in Altibase4 CLI library.
SQLHSTMT stmt;
SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
SQLPrepare(stmt, (SQLCHAR *)”SELECT I1 FROM T1”, SQL_NTS);
SQLExecute(stmt);
SQLFetch(stmt);
SQLExecute(stmt);
However, if you execute codes above with ODBC-CLI in Altibase5, function sequence error occurs in
SQLExecute(stmt). Because stmt performing SQLExecute() first indicates to generate result set.
Therefore, ODBC cursor becomes open and state of stmt indicates S5. (Refer to MSDN ODBC specification.). However, error occurs in this state cause of no performing SQLExecute().
If you want to perform SQLExecute() again, call SQLCloseCursor() clearly as follows and then make stmt have S1 or S3 state.
255 Upgrade
Other Changes
SQLExecute(stmt);
SQLFetch(stmt);
SQLCloseCursor(stmt);
SQLExecute(stmt);
SQLBindParameter - ColumnSize Argument
ColumnSize of SQLBindParameter() as the 6th parameter in Altibase 5 is different from that of previous one.
If you insert 0 into this argument for previous version, no problem.
However, if you insert maximum length of data transmitted to server in Altibase 5, its performance has problem because it checks their information whenever executed.
SQLBindParameter – StrLen_or_IndPtr Argument
CLI library in Altibase 4 references data only if they, which StrLen_or_IndPtr argument indicates, have variable length.
However, Altibase 5 references the values in the memory StrLen_or_IndPtr argument indicates whenever performing SQLExecute() or SQLExecDirect() because Altibase 5 can implement SQLPut-
Data() and SQLParamData().
Therefore, you need special care in perfectly initializing memory the pointer indicates if sending
StrLen_or_Ind as the last argument of SQLBindParameter() to not Null pointer but valid pointer variables.
If SQL_DATA_AT_EXEC is -2 as constant number or SQL_LEN_DATA_AT_EXEC() is less than -100 without initializing memory completely, CLI library judges user intends to send the argument with
SQLPutData(). And CLI library returns SQL_NEED_DATA when you call SQLExecute().
If SQLExecDirect() returns the unintended value(SQL_NEED_DATA) cause of no initialized value above, this influences on functions called next. So you need special care that function sequence errors in all functions called next cause to return SQL_ERROR.
SQLPutData(), SQLParamData()
ODBC-CLI in Altibase 5 supports SQLPutData() and SQLParamData() provided not in previous version. Refer to MSDN for details about each function.
The following is the example program with using functions and StrLen_or_IndPtr mentioned above.
Table Schema :
CREATE TABLE T2_CHAR (I1 INTEGER, I2 CHAR(50)); void putdata_test(void)
{
SQLRETURN sRetCode;
SQLHANDLE sStmt;
SQLINTEGER i1;
SQLLEN i1ind;
ODBC User’s Manual 256
Other Changes
SQLCHAR *i2[10] =
{
(unsigned char *)"0000000000000.",
(unsigned char *)"1111111111111. test has been done.",
(unsigned char *)"2222222222222. Abra ca dabra",
(unsigned char *)"3333333333333. Short accounts make long friends.",
(unsigned char *)"4444444444444. Whar the hell are you doing man!",
(unsigned char *)"5555555555555. Oops! I missed this row. What an idiot!",
(unsigned char *)"6666666666666. SQLPutData test is well under way.",
(unsigned char *)"7777777777777. The length of this line is well over 50
characters.",
(unsigned char *)"8888888888888. Hehehe",
(unsigned char *)"9999999999999. Can you see this?",
};
SQLLEN i2ind;
SQLINTEGER i;
SQLINTEGER sMarker = 0; i1ind = SQL_DATA_AT_EXEC; i2ind = SQL_DATA_AT_EXEC; sRetCode = SQLAllocHandle(SQL_HANDLE_STMT, gHdbc, &sStmt); check_error(SQL_HANDLE_DBC, gHdbc, "STMT handle allocation", sRetCode); sRetCode = SQLBindParameter(sStmt, 1, SQL_PARAM_INPUT,
SQL_C_SLONG, SQL_INTEGER,
0, 0, (SQLPOINTER *)1, 0, &i1ind); sRetCode = SQLBindParameter(sStmt, 2, SQL_PARAM_INPUT,
SQL_C_CHAR, SQL_CHAR,
60, 0, (SQLPOINTER *)2, 0, &i2ind); sRetCode = SQLPrepare(sStmt,
(SQLCHAR *)"insert into t2_char values (?, ?)", SQL_NTS); for(i = 0; i < 10; i++)
{ i1 = i + 1000; printf("\n"); printf(">>>>>>>> row %d : inserting %d, \"%s\"\n", i, i1, i2[i]); sRetCode = SQLExecute(sStmt); if(sRetCode == SQL_NEED_DATA)
{ sRetCode = SQLParamData(sStmt, (void **)&sMarker); while(sRetCode == SQL_NEED_DATA)
{ printf("SQLParamData gave : %d\n", sMarker); if(sMarker == 1)
{ sRetCode = SQLPutData(sStmt, &i1, 0);
} else if(sMarker == 2)
{ int unitsize = 20; int size; int pos; int len;
257 Upgrade
Other Changes len = strlen((char *)(i2[i])); for(pos = 0; pos < len;)
{ size = len - pos; if(unitsize < size)
{ size = unitsize;
} sRetCode = SQLPutData(sStmt, i2[i] + pos, size);| pos += size;
}
} else
{ printf("bbbbbbbbbbbbbbbbbbbbbbbbbbbbb!!! unknown marker value\n"); exit(1);
} sRetCode = SQLParamData(sStmt, (void **)&sMarker);
}
}
} sRetCode = SQLFreeHandle(SQL_HANDLE_STMT, sStmt); check_error(SQL_HANDLE_DBC, gHdbc, "STMT free", sRetCode);
}
Limitation on ALTER SESSION statements
Altibase 4 specifies AUTOCOMMIT MODE and DEFAULT_DATE_FORMAT as session properties as follows.
SQLExecDirect(stmt,
“ALTER SESSION SET AUTOCOMMIT=FALSE”,
SQL_NTS);
SQLExecDirect(stmt,
“ALTER SESSION SET DEFAULT_DATE_FORMAT='YYYY/MM/DD'",
SQL_NTS);
2 session properties above must have information on ODBC-CLI because they definitely affect conversion of ODBC-CLI and operation of functions related to transactions.
However, ODBC-CLI can’t know property changes if transmitting SQL syntaxes to server directly with using SQLExecDirect().
ODBC-CLI can get information from server to know the values of property, but this causes to have worse performance.
In Altibase 5 the property is modified with SQLSetConnectAttr() to solve this problem. Altibase 5 always makes the property in ODBC-CLI same as that in server.
Altibase executes as follows when using ODBC-CLI.
SQL_ATTR_AUTOCOMMIT,
(SQLPOINTER)SQL_AUTOCOMMIT_OFF,
0);
SQLSetConnectAttr(conn,
ALTIBASE_DATE_FORMAT,
ODBC User’s Manual 258
Other Changes
(SQLPOINTER)"YYYY/MM/DD",
SQL_NTS);
SQLRowCount(), SQLMoreResults() functions
•
•
•
There are 2 results of ODBC.
Number of affected rows
• Result set
ODBC-CLI considers multiple results in Altibase 5. In other words, you can get them by one execution. Therefore, returned results of SQLRoewCount() are different from those of Altibase 4 when you use array binding.
SQLRowCount() : gets affected row count in “current” result.
SQLMoreResults() : moves to “next” result and returns SQL_NO_DATA if current result is last.
Example
CREATE TABLE T1 (I1 INTEGER);
INSERT INTO T1 VALUES(1);
INSERT INTO T1 VALUES(2); ........ repeat 1000 times
2
3
.
.
SELECT * FROM T1;
T1
-----
1
.
1000
-----
SQLINTEGER p1[3];
SQLINTEGER p2[3];
SQLLEN rowcount = 0L;
SQLLEN totalRowcount = 0L; p1[0] = 10; p2[0] = 20; p1[1] = 100; p2[1] = 200; p1[2] = 11; p2[2] = 14;
SQLSetStmtAttr(stmt, SQL_ATTR_PARAMSET_SIZE, 3); // <--- array binding
SQLBindParameter(stmt, 1, p1 ..);
SQLBindParameter(stmt, 2, p2 ..);
SQLExecDirect(stmt,
(SQLCHAR *)"DELETE FROM T1 WHERE I1>? AND I1<?”,
SQL_NTS); do {
SQLRowCount(stmt, &rowcount); printf("%d\n", rowcount); totalRowcount += rowcount; rc = SQLMoreResults(stmt);
} while (rc != SQL_NO_DATA);
259 Upgrade
Other Changes printf(“totalRowcount = %d\n”, totalRowCount);
Execution Results
9 => This is affected row count of DELETE FROM T1 WHERE I1>10 AND I1<20
199 => This is affected row count of DELETE FROM T1 WHERE I1>100 AND I1<200
0 => This is affected row count of DELETE FROM T1 WHERE I1>11 AND I1<14
(No record exists because it is deleted by the first execution.)
208 => This is the total of affected row counts
Each execution result of syntax the argument indicates is created, and then sent to ODBC-CLI. When multiple results are created like this, each data can move for next result with SQLMoreResults() and have its result with SQLRowCount().
If you sum up 3results above in Altibase4, SQLRowCount() returns 208.
If you want same results in Altibase 5 as in Altibase 4, you may execute SQLMoreResults() repeatedly until it returns SQL_NO_DATA, and then add this result to result of SQLRowCount().
Unlimited Array Execute, Array Fetch
Altibase doesn’t have restrictions on Array Execute and Array Fetch as buffer size.
Therefore, you can bind array in the allocated memory and can use CM_BUFF_SIZE no more.
Unavailable Properties
Batch Processing Mode
You can’t use batch keyword of connection string and SQL_ATTR_BATCH.
SQL_ATTR_MAX_ROWS
This indicates to specify the number of prefetched row for better performance in Altibase4. However, this property is similar to LIMIT of SELECT statement following ODBC. This option isn’t available for ODBC-CLI of Altibase.
Therefore, if you specify property above as SQLSetStmtAttr(), this asks your attention because error occurs like ‘Optional feature not implemented’.
ODBC User’s Manual 260
Index
B
Basic Programming Steps
Binding Parameters
C
C Data Types
Converting C Data into SQL Data types
Converting SQL Data into C Data Types
D
Data Type
E
Example of Procedure test Program 217
F
Function Conformance Level
Function Overview
L
Limitation on ALTER SESSION statements 257
LOB
LOB Data Types
M
Managing Diagnosis Messages
O
ODBC Error Codes
Open Database Connectivity
P
Programing Considerations
S
Sample of Simple Basic Program
Sample of Using Metadata 210
SQL Data Types
SQLAllocConnect
SQLAllocEnv
SQLAllocHandle
SQLAllocStmt
SQL_ATTR_MAX_ROWS
SQLBindCol
SQLBindFileToCol
SQLBindFileToParam
SQLBindParameter
SQL_BIT 243
261
SQL_BYTE
SQLCloseCursor
SQLColAttribute
SQLColumns
SQLConnect
SQLDescribeCol
SQLDescribeParam
SQLDisconnect
SQLDriverConnect
SQLEndTran
SQLError
SQLExecDirect
SQLExecute
SQLFetch
SQLFetchScroll
SQLForeignKeys
SQLFreeConnect
SQLFreeEnv
SQLFreeHandle
SQLFreeLob
SQLFreeStmt
SQLGetConnectAttr
SQLGetData
SQLGetDescField
SQLGetDescRec
SQLGetDiagField
SQLGetDiagRec
SQLGetEnvAttr
SQLGetFunctions
SQLGetInfo
SQLGetLob
SQLGetLobLength
SQLGetPlan
SQLGetStmtAttr
SQLGetTypeInfo
SQLMoreResult
SQLMoreResults()
SQLNativeSql
SQL_NIBBLE 247
SQLNumParams
SQLNumResultCols
SQLParamData
SQLParamData()
SQLPrepare
SQLPrimaryKeys
SQLProcedureColumns
SQLProcedures
SQLPutData
SQLPutData()
SQLPutLob
SQLRowCount
SQLRowCount()
SQLSetConnectAttr
SQLSetDescField
SQLSetEnvAttr
SQLSetStmtAttr
SQLStatistics
SQLTablePrivileges
SQLTables
SQLTransact
SQL_TYPE_TIMESTAMP
SQL_VARBIT 243
State Transition Tables
Statement State Transition-related Errors
StrLen_or_IndPtr
U
Using SQLFreeStmt() function
Using the ODBC
Using Windows ODBC versus Using UNIX ODBC
262
advertisement
advertisement
Table of contents
- 14 About This Manual
- 14 Target Users
- 14 Software Environment
- 14 Organization
- 15 Convention
- 17 Related Resource
- 17 Online Manual
- 18 Altibase Welcomes Your Opinions!
- 20 Open Database Connectivity
- 20 Backgrounds of the ODBC
- 20 ODBC versus Embedded C/C++ Programming
- 20 Groups of ODBC Functions
- 22 Using the ODBC
- 22 Basic Usages
- 22 Initializing Handles
- 23 Processing of Transactions
- 24 Release Handle
- 24 Managing Diagnosis Messages
- 24 Restriction
- 25 Using ODBC
- 25 Using UNIX ODBC versus Using Windows ODBC
- 27 Basic Programming Steps
- 28 Step 1: Connecting to a Database
- 28 Step 2: Initializing an application Status
- 28 Step 3: Executing an SQL statements
- 29 Step 4a: Fetch the Results
- 29 Step 4b: Fetch the Affected Row Count
- 30 Step 5: Commit/Rollback a Transaction
- 30 Step 6: Disconnect from the Altibase Database
- 31 Summary of ODBC Functions
- 36 SQLAllocConnect
- 36 Syntax
- 36 Arguments
- 36 Return Values
- 36 Description
- 37 Diagnosis
- 37 Related Functions
- 37 Example
- 38 SQLAllocEnv
- 38 Syntax
- 38 Arguments
- 38 Return Values
- 38 Description
- 38 Related Functions
- 39 Example
- 40 SQLAllocHandle
- 40 Syntax
- 40 Arguments
- 40 Return Values
- 41 Description
- 42 Diagnosis
- 42 Related Functions
- 42 Example
- 43 SQLAllocStmt
- 43 Syntax
- 43 Arguments
- 43 Return Values
- 43 Description
- 44 Diagnosis
- 44 Related Functions
- 44 Example
- 45 SQLBindCol
- 45 Syntax
- 45 Arguments
- 46 Return Values
- 46 Description
- 47 Diagnosis
- 47 Related Functions
- 47 Example
- 49 SQLCloseCursor
- 49 Syntax
- 49 Arguments
- 49 Return Value
- 49 Description
- 49 Diagnostics
- 50 Related Function
- 51 SQLBindParameter
- 51 Syntax
- 51 Arguments
- 52 Return Values
- 53 Description
- 56 Example
- 57 Constraints
- 57 Diagnosis
- 57 Related Functions
- 57 Example
- 60 SQLColAttribute
- 60 Syntax
- 60 Arguments
- 61 Return Values
- 61 Description
- 62 Diagnosis
- 63 Related Functions
- 63 Example
- 64 SQLColumns
- 64 Syntax
- 64 Arguments
- 64 Return Values
- 65 Description
- 66 Diagnosis
- 66 Related Functions
- 67 Example
- 68 SQLConnect
- 68 Syntax
- 68 Arguments
- 68 Return Values
- 69 Description
- 69 Diagnosis
- 69 Related Functions
- 70 SQLDescribeCol
- 70 Syntax
- 70 Arguments
- 71 Return Values
- 71 Description
- 71 Diagnosis
- 72 Related Functions
- 72 Example
- 73 SQLDescribeParam
- 73 Syntax
- 73 Arguments
- 73 Return Values
- 74 Description
- 74 Diagnosis
- 74 Related Functions
- 74 Example
- 76 SQLDisconnect
- 76 Syntax
- 76 Arguments
- 76 Return Values
- 76 Description
- 77 Diagnosis
- 77 Related Functions
- 77 Example
- 78 SQLDriverConnect
- 78 Syntax
- 78 Arguments
- 79 Return Values
- 79 Description
- 80 Restriction
- 81 Diagnosis
- 81 Related Functions
- 82 Example
- 83 SQLEndTran
- 83 Syntax
- 83 Arguments
- 83 Return Values
- 83 Description
- 84 Diagnosis
- 84 Related Functions
- 84 Example
- 85 SQLError
- 85 Syntax
- 85 Arguments
- 85 Return Values
- 86 Description
- 86 Example
- 87 SQLExecDirect
- 87 Syntax
- 87 Arguments
- 87 Return Values
- 87 Description
- 88 Diagnosis
- 88 Related Functions
- 88 Example
- 89 SQLExecute
- 89 Syntax
- 89 Arguments
- 89 Return Values
- 89 Description
- 90 Diagnosis
- 90 Related Functions
- 91 Example
- 92 SQLFetch
- 92 Syntax
- 92 Arguments
- 92 Return Values
- 92 Description
- 94 Diagnosis
- 95 Related Functions
- 95 Example
- 96 SQLFetchScroll
- 96 Syntax
- 96 Arguments
- 96 Return Values
- 96 Description
- 97 Diagnosis
- 97 Related Functions
- 97 Example
- 98 SQLForeignKeys
- 98 Syntax
- 98 Arguments
- 99 Return Values
- 99 Description
- 101 Diagnosis
- 101 Related Functions
- 101 Example
- 102 SQLFreeConnect
- 102 Syntax
- 102 Arguments
- 102 Return Values
- 102 Description
- 102 Related Functions
- 102 Example
- 104 SQLFreeEnv
- 104 Syntax
- 104 Arguments
- 104 Return Values
- 104 Description
- 104 Related Functions
- 104 Example
- 105 SQLFreeHandle
- 105 Syntax
- 105 Arguments
- 105 Return Values
- 105 Description
- 106 Diagnosis
- 106 Related Functions
- 106 Example
- 107 SQLFreeStmt
- 107 Syntax
- 107 Arguments
- 107 Return Values
- 107 Description
- 108 Diagnosis
- 108 Related Functions
- 108 Example
- 109 SQLGetConnectAttr
- 109 Syntax
- 109 Arguments
- 109 Return Values
- 110 Description
- 110 Diagnosis
- 111 Related Functions
- 111 Example
- 112 SQLGetData
- 112 Syntax
- 112 Arguments
- 113 Return Values
- 113 Description
- 114 Diagnosis
- 114 Related Functions
- 115 Example
- 116 SQLGetDescField
- 116 Syntax
- 116 Arguments
- 116 Return Value
- 117 Description
- 117 Diagnostics
- 117 Related Function
- 118 SQLGetDescRec
- 118 Syntax
- 118 Arguments
- 118 Return Value
- 119 Description
- 119 Diagnostics
- 119 Related Function
- 120 SQLGetDiagField
- 120 Syntax
- 120 Arguments
- 121 Result Value
- 121 Description
- 121 Related Function
- 122 SQLGetDiagRec
- 122 Syntax
- 122 Argument
- 122 Return Value
- 123 Description
- 123 Related Function
- 124 SQLGetEnvAttr
- 124 Syntax
- 124 Argument
- 124 Return Value
- 124 Description
- 125 Diagnosis
- 125 Related Function
- 126 SQLGetFunctions
- 126 Syntax
- 126 Argument
- 126 Return Value
- 126 Description
- 127 Diagnostics
- 127 Related Function
- 128 SQLGetInfo
- 128 Syntax
- 128 Arguments
- 128 Return Values
- 129 Description
- 129 Diagnosis
- 130 SQLGetPlan
- 130 Syntax
- 130 Arguments
- 130 Returned Values
- 130 Description
- 130 Related Function
- 130 Example
- 131 SQLGetStmtAttr
- 131 Syntax
- 131 Arguments
- 132 Return Values
- 132 Description
- 132 Diagnosis
- 132 Related Functions
- 132 Example
- 133 SQLGetTypeInfo
- 133 Syntax
- 133 Arguments
- 133 Return Values
- 133 Description
- 133 Diagnosis
- 134 Related Functions
- 134 Example
- 136 SQLMoreResult
- 136 Syntax
- 136 Arguments
- 136 Result Values
- 136 Description
- 136 Related Function
- 137 SQLNativeSql
- 137 Syntax
- 137 Argument
- 137 Return Value
- 137 Description
- 138 Diagnosis
- 138 Example
- 139 SQLNumParams
- 139 Syntax
- 139 Arguments
- 139 Return Values
- 139 Description
- 139 Diagnosis
- 139 Related Functions
- 140 Example
- 141 SQLNumResultCols
- 141 Syntax
- 141 Arguments
- 141 Return Values
- 141 Description
- 142 Diagnosis
- 142 Related Functions
- 142 Example
- 143 SQLParamData
- 143 Syntax
- 143 Argument
- 143 Return Value
- 143 Description
- 143 Diagnosis
- 144 Related Function
- 145 SQLPrepare
- 145 Syntax
- 145 Arguments
- 145 Return Values
- 145 Description
- 146 Diagnosis
- 146 Related Functions
- 146 Example
- 148 SQLPrimaryKeys
- 148 Syntax
- 148 Arguments
- 148 Return Values
- 149 Description
- 149 Diagnosis
- 149 Related Functions
- 150 Example
- 151 SQLProcedureColumns
- 151 Syntax
- 151 Arguments
- 151 Return Values
- 152 Description
- 154 Diagnosis
- 154 Related Functions
- 154 Example
- 155 SQLProcedures
- 155 Syntax
- 155 Arguments
- 155 Return Values
- 156 Description
- 157 Diagnosis
- 157 Related Functions
- 157 Example
- 158 SQLPutData
- 158 Syntax
- 158 Argument
- 158 Return Value
- 158 Description
- 158 Diagnosis
- 159 Related Function
- 160 SQLRowCount
- 160 Syntax
- 160 Arguments
- 160 Return Values
- 160 Description
- 161 Diagnosis
- 161 Related Functions
- 161 Example
- 162 SQLSetConnectAttr
- 162 Syntax
- 162 Arguments
- 162 Return Values
- 163 Description
- 163 Diagnosis
- 163 Related Functions
- 164 Example
- 165 SQLSetDescField
- 165 Syntax
- 165 Argument
- 165 Return Value
- 165 Description
- 166 Diagnosis
- 166 Related Function
- 167 SQLSetEnvAttr
- 167 Syntax
- 167 Arguments
- 167 Return Values
- 167 Description
- 168 Diagnosis
- 168 Related Functions
- 169 SQLSetStmtAttr
- 169 Syntax
- 169 Arguments
- 171 Return Values
- 171 Description
- 174 Diagnosis
- 174 Example
- 176 SQLSpecialColumns
- 176 Syntax
- 176 Arguments
- 177 Return Values
- 177 Description
- 178 Diagnosis
- 178 Related Functions
- 178 Example
- 180 SQLStatistics
- 180 Syntax
- 180 Arguments
- 180 Return Values
- 181 Description
- 182 Diagnosis
- 183 Related Functions
- 183 Example
- 184 SQLTablePrivileges
- 184 Syntax
- 184 Arguments
- 184 Return Values
- 185 Description
- 186 Diagnosis
- 186 Related Functions
- 186 Example
- 187 SQLTables
- 187 Syntax
- 187 Arguments
- 187 Return Values
- 188 Description
- 189 Diagnosis
- 189 Related Functions
- 189 Example
- 191 SQLTransact
- 191 Syntax
- 191 Arguments
- 191 Return Values
- 191 Description
- 192 Example
- 194 LOB Data Types
- 195 Function Overview
- 196 SQLBindFileToCol
- 196 Syntax
- 196 Arguments
- 197 Result Values
- 197 Description
- 198 Diagnosis
- 198 Related Functions
- 198 Examples
- 201 SQLBindFileToParam
- 201 Syntax
- 201 Arguments
- 202 Result Values
- 202 Description
- 203 Diagnosis
- 203 Related Functions
- 203 Examples
- 206 SQLGetLobLength
- 206 Syntax
- 206 Arguments
- 206 Result Values
- 206 Description
- 207 Diagnosis
- 207 Related Functions
- 208 Example
- 209 SQLGetLob
- 209 Syntax
- 209 Arguments
- 210 Result Values
- 210 Description
- 210 Diagnosis
- 210 Related Functions
- 211 Example
- 213 SQLPutLob
- 213 Syntax
- 213 Arguments
- 214 Result Values
- 214 Description
- 214 Diagnosis
- 214 Related Functions
- 215 Examples
- 219 SQLFreeLob
- 219 Syntax
- 219 Arguments
- 219 Result Values
- 219 Description
- 220 Diagnosis
- 220 Related Functions
- 220 Example
- 221 Programing Considerations
- 221 Multithreading
- 221 Statement Handles
- 221 Binding Parameters
- 222 Transaction Commit Mode
- 222 Using SQLFreeStmt() function
- 222 Sample of Simple Basic Program
- 228 Sample of Using Metadata
- 235 Example of Procedure test Program
- 239 SQL Data Types
- 240 C Data Types
- 242 Converting SQL Data into C Data Types
- 243 Converting C Data into SQL Data types
- 245 ODBC Error Codes
- 247 Database Connection-related Error Codes
- 248 Network-related Error Codes
- 248 Statement State Transition-related Errors
- 250 SQLAllocHandle
- 250 SQLBindCol
- 250 SQLBindParameter
- 250 SQLColumns, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLStatistics, SQLTables
- 251 SQLConnect
- 251 SQLDisconnect
- 251 See SQLDriverConnect: SQLConnect
- 251 SQLExecDirect
- 252 SQLExecute
- 252 SQLFetch
- 252 SQLFreeHandle
- 252 SQLFreeStmt
- 253 SQLGetData
- 253 SQLGetTypeInfo: See SQLColumns.
- 253 SQLNumResultCols
- 253 SQLPrepare
- 253 SQLPrimaryKeys: See SQLColumns.
- 254 SQLProcedureColumns: See SQLColumns.
- 254 SQLProcedures: See SQLColumns.
- 254 SQLSetConnectAttr
- 254 SQLSetEnvAttr
- 254 SQLSetStmtAttr
- 255 SQLStatistics: See SQLColumns.
- 255 SQLTables: See SQLColumns.
- 255 State Transition Tables
- 257 Interface Conformance Levels
- 257 Function Conformance Level
- 261 Data Type
- 261 SQLCHAR, SQLSCHAR
- 261 SQL_BIT, SQL_VARBIT
- 265 SQL_NIBBLE
- 267 SQL_BYTE
- 269 DATE : SQL_TYPE_TIMESTAMP
- 269 LOB
- 273 Other Changes
- 273 SQLCloseCursor
- 274 SQLBindParameter - ColumnSize Argument
- 274 SQLBindParameter – StrLen_or_IndPtr Argument
- 274 SQLPutData(), SQLParamData()
- 276 Limitation on ALTER SESSION statements
- 277 SQLRowCount(), SQLMoreResults() functions
- 278 Unlimited Array Execute, Array Fetch
- 278 Unavailable Properties