Versions available for this page: CUBRID 8.4.3 | CUBRID 9.0.0 |
The applications using CCI interact with CUBRID in the process of connecting to CAS, preparing queries, executing queries, handling response, and disconnecting. In each process, CCI communicates with applications through connection handle, query handle, and response handle.
The default value of auto-commit mode can be configured by using CCI_DEFAULT_AUTOCOMMIT (which is a broker parameter). If it is omitted, the default value is set to ON. To change auto-commit mode within applications, you should use the cci_set_autocommit() function. If auto-commit mode is OFF, you should explicitly commit or roll back transactions by using the cci_end_tran() function.
General process for writing applications is as follows. For using the prepared statement, additional step binding data to a variable is required; the examples 1 and 2 show the way to implement this.
//Example to execute a simple query
#include <stdio.h>
#include "cas_cci.h"
#define BUFSIZE (1024)
int
main (void)
{
int con = 0, req = 0, col_count = 0, i, ind;
int error;
char *data;
T_CCI_ERROR cci_error;
T_CCI_COL_INFO *col_info;
T_CCI_CUBRID_STMT stmt_type;
char *query = "select * from code";
//getting a connection handle for a connection with a server
con = cci_connect ("localhost", 33000, "demodb", "dba", "");
if (con < 0)
{
printf ("cannot connect to database ");
return 1;
}
//preparing the SQL statement
req = cci_prepare (con, query, 0, &cci_error);
if (req < 0)
{
printf ("prepare error: %d, %s ", cci_error.err_code,
cci_error.err_msg);
goto handle_error;
}
//getting column information when the prepared statement is the SELECT query
col_info = cci_get_result_info (req, &stmt_type, &col_count);
if (col_info == NULL)
{
printf ("get_result_info error: %d, %s ", cci_error.err_code,
cci_error.err_msg);
goto handle_error;
}
//Executing the prepared SQL statement
error = cci_execute (req, 0, 0, &cci_error);
if (error < 0)
{
printf ("execute error: %d, %s ", cci_error.err_code,
cci_error.err_msg);
goto handle_error;
}
while (1)
{
//Moving the cursor to access a specific tuple of results
error = cci_cursor (req, 1, CCI_CURSOR_CURRENT, &cci_error);
if (error == CCI_ER_NO_MORE_DATA)
{
break;
}
if (error < 0)
{
printf ("cursor error: %d, %s ", cci_error.err_code,
cci_error.err_msg);
goto handle_error;
}
//Fetching the query result into a client buffer
error = cci_fetch (req, &cci_error);
if (error < 0)
{
printf ("fetch error: %d, %s ", cci_error.err_code,
cci_error.err_msg);
goto handle_error;
}
for (i = 1; i <= col_count; i++)
{
//Getting data from the fetched result
error = cci_get_data (req, i, CCI_A_TYPE_STR, &data, &ind);
if (error < 0)
{
printf ("get_data error: %d, %d ", error, i);
goto handle_error;
}
printf ("%s |", data);
}
printf (" ");
}
//Closing the request handle
error = cci_close_req_handle (req);
if (error < 0)
{
printf ("close_req_handle error: %d, %s ", cci_error.err_code,
cci_error.err_msg);
goto handle_error;
}
//Disconnecting with the server
error = cci_disconnect (con, &cci_error);
if (error < 0)
{
printf ("error: %d, %s ", cci_error.err_code, cci_error.err_msg);
goto handle_error;
}
return 0;
handle_error:
if (req > 0)
cci_close_req_handle (req);
if (con > 0)
cci_disconnect (con, &cci_error);
return 1;
}
//Example to execute a query with a bind variable
char *query = "select * from nation where name = ?";
char namebuf[128];
//getting a connection handle for a connection with a server
con = cci_connect ("localhost", 33000, "demodb", "dba", "");
if (con < 0)
{
printf ("cannot connect to database ");
return 1;
}
//preparing the SQL statement
req = cci_prepare (con, query, 0, &cci_error);
if (req < 0)
{
printf ("prepare error: %d, %s ", cci_error.err_code,
cci_error.err_msg);
goto handle_error;
}
//Binding date into a value
strcpy (namebuf, "Korea");
error =
cci_bind_param (req, 1, CCI_A_TYPE_STR, &namebuf, CCI_U_TYPE_STRING,
CCI_BIND_PTR);
if (error < 0)
{
printf ("bind_param error: %d ", error);
goto handle_error;
}
#include <stdio.h>
#include "cas_cci.h"
//Example to use connection/statement pool in CCI
int main ()
{
T_CCI_PROPERTIES *ps = NULL;
T_CCI_DATASOURCE *ds = NULL;
T_CCI_ERROR err;
T_CCI_CONN cons[20];
int rc = 1, i;
ps = cci_property_create ();
if (ps == NULL)
{
fprintf (stderr, "Could not create T_CCI_PROPERTIES. ");
rc = 0;
goto cci_pool_end;
}
cci_property_set (ps, "user", "dba");
cci_property_set (ps, "url", "cci:cubrid:localhost:33000:demodb:::");
cci_property_set (ps, "pool_size", "10");
cci_property_set (ps, "max_wait", "1200");
cci_property_set (ps, "pool_prepared_statement", "true");
cci_property_set (ps, "default_autocommit", "false");
cci_property_set (ps, "default_isolation", "TRAN_REP_CLASS_UNCOMMIT_INSTANCE");
cci_property_set (ps, "default_lock_timeout", "10");
cci_property_set (ps, "login_timeout", "300000");
cci_property_set (ps, "query_timeout", "3000");
ds = cci_datasource_create (ps, &err);
if (ds == NULL)
{
fprintf (stderr, "Could not create T_CCI_DATASOURCE. ");
fprintf (stderr, "E[%d,%s] ", err.err_code, err.err_msg);
rc = 0;
goto cci_pool_end;
}
for (i = 0; i < 3; i++)
{
cons[i] = cci_datasource_borrow (ds, &err);
if (cons[i] < 0)
{
fprintf (stderr,
"Could not borrow a connection from the data source. ");
fprintf (stderr, "E[%d,%s] ", err.err_code, err.err_msg);
continue;
}
// put working code here.
cci_work (cons[i]);
}
sleep (1);
for (i = 0; i < 3; i++)
{
if (cons[i] < 0)
{
continue;
}
cci_datasource_release (ds, cons[i], &err);
}
cci_pool_end:
cci_property_destroy (ps);
cci_datasource_destroy (ds);
return 0;
}
// working code
int cci_work (T_CCI_CONN con)
{
T_CCI_ERROR err;
char sql[4096];
int req, res, error, ind;
int data;
cci_set_autocommit (con, CCI_AUTOCOMMIT_TRUE);
cci_set_lock_timeout (con, 100, &err);
cci_set_isolation_level (con, TRAN_REP_CLASS_COMMIT_INSTANCE, &err);
error = 0;
snprintf (sql, 4096, "SELECT host_year FROM record WHERE athlete_code=11744");
req = cci_prepare (con, sql, 0, &err);
if (req < 0)
{
printf ("prepare error: %d, %s ", err.err_code, err.err_msg);
return error;
}
res = cci_execute (req, 0, 0, &err);
if (res < 0)
{
printf ("execute error: %d, %s ", err.err_code, err.err_msg);
goto cci_work_end;
}
while (1)
{
error = cci_cursor (req, 1, CCI_CURSOR_CURRENT, &err);
if (error == CCI_ER_NO_MORE_DATA)
{
break;
}
if (error < 0)
{
printf ("cursor error: %d, %s ", err.err_code, err.err_msg);
goto cci_work_end;
}
error = cci_fetch (req, &err);
if (error < 0)
{
printf ("fetch error: %d, %s ", err.err_code, err.err_msg);
goto cci_work_end;
}
error = cci_get_data (req, 1, CCI_A_TYPE_INT, &data, &ind);
if (error < 0)
{
printf ("get data error: %d ", error);
goto cci_work_end;
}
printf ("%d ", data);
}
error = 1;
cci_work_end:
cci_close_req_handle (req);
return error;
}
In a thread-based programs, the database connection for each thread should be used independently.
Once you have written applications using CCI, you should decide, according to its features, whether to execute CCI as static or dynamic link before you build it. See the table in CCI Overview to decide which library will be used.
The following is an example of Makefile, which makes a link by using the dynamic library on UNIX/Linux.
CC=gcc
CFLAGS = -g -Wall -I. -I$CUBRID/include
LDFLAGS = -L$CUBRID/lib -lcascci -lnsl
TEST_OBJS = test.o
EXES = test
all: $(EXES)
test: $(TEST_OBJS)
$(CC) -o $@ $(TEST_OBJS) $(LDFLAGS)
The following image shows configuration to use static library on Windows.

You can create LOB data file and bind the data by using the functions below in CCI applications.
Example
int con = 0; /* connection handle */
int req = 0; /* request handle */
int res;
int n_executed;
int i;
T_CCI_ERROR error;
T_CCI_BLOB blob = NULL;
char data[1024] = "bulabula";
con = cci_connect ("localhost", 33000, "tdb", "PUBLIC", "");
if (con < 0) {
goto handle_error;
}
req = cci_prepare (con, "insert into doc (doc_id, content) values (?,?)", 0, &error);
if (req< 0)
{
goto handle_error;
}
res = cci_bind_param (req, 1 /* binding index*/, CCI_A_TYPE_STR, "doc-10", CCI_U_TYPE_STRING, CCI_BIND_PTR);
/* Creating an empty LOB data file */
res = cci_blob_new (con, &blob, &error);
res = cci_blob_write (con, blob, 0 /* start position */, 1024 /* length */, data, &error);
/* Binding BLOB data */
res = cci_bind_param (req, 2 /* binding index*/, CCI_A_TYPE_BLOB, (void *)blob, CCI_U_TYPE_BLOB, CCI_BIND_PTR);
n_executed = cci_execute (req, 0, 0, &error);
if (n_executed < 0)
{
goto handle_error;
}
/* Commit */
if (cci_end_tran(con, CCI_TRAN_COMMIT, &error) < 0)
{
goto handle_error;
}
/* Memory free */
cci_blob_free(blob);
return 0;
handle_error:
if (blob != NULL)
{
cci_blob_free(blob);
}
if (req > 0)
{
cci_close_req_handle (req);
}
if (con > 0)
{
cci_disconnect(con, &error);
}
return -1;
You can retrieve LOB data by using the following functions in CCI applications. Note that if you enter data in the LOB type column, the actual LOB data is stored in the file located in external storage and Locator value is stored in the LOB type column. Thus, to retrieve the LOB data stored in the file, you should call the cci_blob_read() function but the cci_get_data() function.
Example
int con = 0; /* connection handle */
int req = 0; /* request handle */
int ind; /* NULL indicator, 0 if not NULL, -1 if NULL*/
int res;
int i;
T_CCI_ERROR error;
T_CCI_BLOB blob;
char buffer[1024];
con = cci_connect ("localhost", 33000, "image_db", "PUBLIC", "");
if (con < 0)
{
goto handle_error;
}
req = cci_prepare (con, "select content from doc_t", 0 /*flag*/, &error);
if (req< 0)
{
goto handle_error;
}
res = cci_execute (req, 0/*flag*/, 0/*max_col_size*/, &error);
res = cci_fetch_size (req, 100 /* fetch size */);
while (1) {
res = cci_cursor (req, 1/* offset */, CCI_CURSOR_CURRENT/* cursor position */, &error);
if (res == CCI_ER_NO_MORE_DATA)
{
break;
}
res = cci_fetch (req, &error);
/* Fetching CLOB Locator */
res = cci_get_data (req, 1 /* colume index */, CCI_A_TYPE_BLOB,
(void *)&blob /* BLOB handle */, &ind /* NULL indicator */);
/* Fetching CLOB data */
res = cci_blob_read (con, blob, 0 /* start position */, 1024 /* length */, buffer, &error);
printf ("content = %s ", buffer);
}
/* Memory free */
cci_blob_free(blob);
res=cci_close_req_handle(req);
res = cci_disconnect (con, &error);
return 0;
handle_error:
if (req > 0)
{
cci_close_req_handle (req);
}
if (con > 0)
{
cci_disconnect(con, &error);
}
return -1;
CCI API functions return a negative number as CCI or CAS(broker application server) error codes when an error occurs. CCI error codes occur on CCI API functions, and CAS error codes occur on CAS.
Caution When the error occurred on the server, CCI_ER DBMS returned on the server and the err_buf.code are different. Except server errors, all error codes which are stored on err_buf are the same with the error codes which the function return.
Regarding database server errors, see "Administrator's Guide > CUBRID Controls > Database Server > Database Server Errors".
Database error buffer(err_buf) is a variable of T_CCI_ERROR defined on cas_cch.h header file.
CCI error codes which starting with CCI_ER are defined in enum called T_CCI_ERROR_CODE under the $CUBRID/include/cas_cci.h file. Therefore, to use this error code name in program code, include a header file by entering #include "cas_cci.h".
The following example shows how to display error messages. In the example, the error code value (req) returned by cci_prepare() is CCI_ER_DBMS. -493 is stored in cci_error.err_code and 'Syntax: Unknown class "notable". select * from notable' error message is stored in cci_error.err_msg of the database error buffer.
// gcc -o err err.c -m64 -I${CUBRID}/include -lnsl ${CUBRID}/lib/libcascci.so -lpthread
#include <stdio.h>
#include "cas_cci.h"
#define BUFSIZE (1024)
int
main (void)
{
int con = 0, req = 0, col_count = 0, i, ind;
int error;
char *data;
T_CCI_ERROR err_buf;
char *query = "select * from notable";
//getting a connection handle for a connection with a server
con = cci_connect ("localhost", 33000, "demodb", "dba", "");
if (con < 0)
{
printf ("cannot connect to database ");
return 1;
}
//preparing the SQL statement
req = cci_prepare (con, query, 0, & err_buf);
if (req < 0)
{
if (req == CCI_ER_DBMS)
{
printf ("error from server: %d, %s ", err_buf.err_code, err_buf.err_msg);
}
else
{
char msg_buf[1024];
cci_get_err_msg(req, msg_buf, 1024);
printf ("error from cas: %d, %s ”, req, msg_buf);
}
goto handle_error;
}
// ...
}
The following list shows CCI error codes and CAS error codes.
|
Error Code |
Error Message |
Note |
|---|---|---|
|
CCI_ER_DBMS |
"CUBRID DBMS Error" |
Database connection fails even though CAS connection has succeeded. The causes of the error can be checked with err_code and err_msg stored in the T_CCI_ERROR struct. |
|
CCI_ER_CON_HANDLE |
"Invalid connection handle" |
|
|
CCI_ER_NO_MORE_MEMORY |
"Memory allocation error" |
Insufficient memory |
|
CCI_ER_COMMUNICATION |
"Cannot communicate with server" |
|
|
CCI_ER_NO_MORE_DATA |
"Invalid cursor position" |
|
|
CCI_ER_TRAN_TYPE |
"Unknown transaction type" |
|
|
CCI_ER_STRING_PARAM |
"Invalid string argument" |
String parameter is NULL or an empty string. |
|
CCI_ER_TYPE_CONVERSION |
"Type conversion error" |
Cannot convert the given value into an actual data type. |
|
CCI_ER_BIND_INDEX |
"Parameter index is out of range" |
Index that binds data is not valid. |
|
CCI_ER_ATYPE |
"Invalid T_CCI_A_TYPE value" |
|
|
CCI_ER_NOT_BIND |
|
Not available |
|
CCI_ER_PARAM_NAME |
"Invalid T_CCI_DB_PARAM value"% |
|
|
CCI_ER_COLUMN_INDEX |
"Column index is out of range"% |
|
|
CCI_ER_SCHEMA_TYPE |
|
Not available |
|
CCI_ER_FILE |
"Cannot open file" |
Fails to open/read/write a file. |
|
CCI_ER_CONNECT |
"Cannot connect to CUBRID CAS" |
Fails to connect CAS when trying connection to the server. |
|
CCI_ER_ALLOC_CON_HANDLE |
"Cannot allocate connection handle"% |
|
|
CCI_ER_REQ_HANDLE |
"Cannot allocate request handle"% |
|
|
CCI_ER_INVALID_CURSOR_POS |
"Invalid cursor position"% |
|
|
CCI_ER_OBJECT |
"Invalid oid string"% |
|
|
CCI_ER_CAS |
|
Not available |
|
CCI_ER_HOSTNAME |
"Unknown host name"% |
|
|
CCI_ER_OID_CMD |
"Invalid T_CCI_OID_CMD value"% |
|
|
CCI_ER_BIND_ARRAY_SIZE |
"Array binding size is not specified" |
|
|
CCI_ER_ISOLATION_LEVEL |
"Unknown transaction isolation level" |
|
|
CCI_ER_SET_INDEX |
"Invalid set index" |
Invalid index is specified when a set element in the T_CCI_SET struct is retrieved. |
|
CCI_ER_DELETED_TUPLE |
"Current row was deleted"% |
|
|
CCI_ER_SAVEPOINT_CMD |
"Invalid T_CCI_SAVEPOINT_CMD value" |
Invalid T_CCI_SAVEPOINT_CMD value is used as an argument of the cci_savepoint() function. |
|
CCI_ER_THREAD_RUNNING |
"Thread is running" |
The thread is still executed when cci_execute() is executed with CCI_EXEC_THREAD flagged and check the result of thread execution through cci_get_thread_result(). |
|
CCI_ER_INVALID_URL |
"Invalid url string"% |
|
|
CCI_ER_INVALID_LOB_READ_POS |
"Invalid lob read position" |
|
|
CCI_ER_INVALID_LOB_HANDLE |
"Invalid lob handle" |
|
|
CCI_ER_NO_PROPERTY |
|
A function starting with "cci_datasource" stores this error code in the CCI error butter exceptionally. |
|
CCI_ER_PROPERTY_TYPE |
|
A function starting with "cci_datasource" stores this error code in the CCI error butter exceptionally. |
|
CCI_ER_INVALID_DATASOURCE |
|
A function starting with "cci_datasource" stores this error code in the CCI error butter exceptionally. |
|
CCI_ER_DATASOURCE_TIMEOUT |
|
A function starting with "cci_datasource" stores this error code in the CCI error butter exceptionally. |
|
CCI_ER_DATASOURCE_TIMEDWAIT |
|
A function starting with "cci_datasource" stores this error code in the CCI error butter exceptionally. |
|
CCI_ER_LOGIN_TIMEOUT |
% |
|
|
CCI_ER_QUERY_TIMEOUT |
% |
|
|
CCI_ER_RESULT_SET_CLOSED |
# |
The below shows the structures which are used on the CCI API functions.
|
Name |
Type |
Member |
Description |
|---|---|---|---|
|
T_CCI_ERROR |
struct |
char err_msg[1024] |
Representation of database error info |
|
int err_code |
|||
|
T_CCI_BIT |
struct |
int size |
Representation of bit type |
|
char *buf |
|||
|
T_CCI_DATE |
struct |
short yr |
Representation of timestamp, date, and time type |
|
short mon |
|||
|
short day |
|||
|
short hh |
|||
|
short mm |
|||
|
short ss |
|||
|
short ms |
|||
|
T_CCI_SET |
void* |
|
Representation of set type |
|
T_CCI_COL_INFO |
struct |
T_CCI_U_TYPE type |
Representation of column information for the SELECT statement |
|
char is_non_null |
|||
|
short scale |
|||
|
int precision |
|||
|
char *col_name |
|||
|
char *real_attr |
|||
|
char *class_name |
|||
|
T_CCI_QUERY_RESULT |
struct |
int result_count |
Results of batch execution |
|
int stmt_type |
|||
|
char *err_msg |
|||
|
char oid[32] |
|||
|
T_CCI_PARAM_INFO |
struct |
T_CCI_PARAM_MODE mode |
Representation of input parameter info |
|
T_CCI_U_TYPE type |
|||
|
short scale |
|||
|
int precision |
|||
|
T_CCI_U_TYPE |
enum |
CCI_U_TYPE_UNKNOWN |
Database type info |
|
CCI_U_TYPE_NULL |
|||
|
CCI_U_TYPE_CHAR |
|||
|
CCI_U_TYPE_STRING |
|||
|
CCI_U_TYPE_NCHAR |
|||
|
CCI_U_TYPE_VARNCHAR |
|||
|
CCI_U_TYPE_BIT |
|||
|
CCI_U_TYPE_VARBIT |
|||
|
CCI_U_TYPE_NUMERIC |
|||
|
CCI_U_TYPE_INT |
|||
|
CCI_U_TYPE_SHORT |
|||
|
CCI_U_TYPE_MONETARY |
|||
|
CCI_U_TYPE_FLOAT |
|||
|
CCI_U_TYPE_DOUBLE |
|||
|
CCI_U_TYPE_DATE |
|||
|
CCI_U_TYPE_TIME |
|||
|
CCI_U_TYPE_TIMESTAMP |
|||
|
CCI_U_TYPE_SET |
|||
|
CCI_U_TYPE_MULTISET |
|||
|
CCI_U_TYPE_SEQUENCE |
|||
|
CCI_U_TYPE_OBJECT |
|||
|
CCI_U_TYPE_BIGINT |
|||
|
CCI_U_TYPE_DATETIME |
|||
|
T_CCI_A_TYPE |
enum |
CCI_A_TYPE_STR |
Representation of type info used in API |
|
CCI_A_TYPE_INT |
|||
|
CCI_A_TYPE_FLOAT |
|||
|
CCI_A_TYPE_DOUBLE |
|||
|
CCI_A_TYPE_BIT |
|||
|
CCI_A_TYPE_DATE |
|||
|
CCI_A_TYPE_SET |
|||
|
CCI_A_TYPE_BIGINT |
|||
|
CCI_A_TYPE_BLOB |
|||
|
CCI_A_TYPE_CLOB |
|||
|
T_CCI_DB_PARAM |
enum |
CCI_PARAM_ISOLATION_LEVEL |
System parameter names |
|
CCI_PARAM_LOCK_TIMEOUT |
|||
|
CCI_PARAM_MAX_STRING_LENGTH |
|||
|
CCI_PARAM_AUTO_COMMIT |
|||
|
T_CCI_SCH_TYPE |
enum |
CCI_SCH_CLASS |
|
|
CCI_SCH_VCLASS |
|||
|
CCI_SCH_QUERY_SPEC |
|||
|
CCI_SCH_ATTRIBUTE |
|||
|
CCI_SCH_CLASS_ATTRIBUTE |
|||
|
CCI_SCH_METHOD |
|||
|
CCI_SCH_CLASS_METHOD |
|||
|
CCI_SCH_METHOD_FILE |
|||
|
CCI_SCH_SUPERCLASS |
|||
|
CCI_SCH_SUBCLASS |
|||
|
CCI_SCH_CONSTRAIT |
|||
|
CCI_SCH_TRIGGER |
|||
|
CCI_SCH_CLASS_PRIVILEGE |
|||
|
CCI_SCH_ATTR_PRIVILEGE |
|||
|
CCI_SCH_DIRECT_SUPER_CLASS |
|||
|
CCI_SCH_PRIMARY_KEY |
|||
|
CCI_SCH_IMPORTED_KEYS |
|||
|
CCI_SCH_EXPORTED_KEYS |
|||
|
CCI_SCH_CROSS_REFERENCE |
|||
|
T_CCI_CUBRID_STMT |
enum |
CUBRID_STMT_ALTER_CLASS |
|
|
CUBRID_STMT_ALTER_SERIAL |
|||
|
CUBRID_STMT_COMMIT_WORK |
|||
|
CUBRID_STMT_REGISTER_DATABASE |
|||
|
CUBRID_STMT_CREATE_CLASS |
|||
|
CUBRID_STMT_CREATE_INDEX |
|||
|
CUBRID_STMT_CREATE_TRIGGER |
|||
|
CUBRID_STMT_CREATE_SERIAL |
|||
|
CUBRID_STMT_DROP_DATABASE |
|||
|
CUBRID_STMT_DROP_CLASS |
|||
|
CUBRID_STMT_DROP_INDEX |
|||
|
CUBRID_STMT_DROP_LABEL |
|||
|
CUBRID_STMT_DROP_TRIGGER |
|||
|
CUBRID_STMT_DROP_SERIAL |
|||
|
CUBRID_STMT_EVALUATE |
|||
|
CUBRID_STMT_RENAME_CLASS |
|||
|
CUBRID_STMT_ROLLBACK_WORK |
|||
|
CUBRID_STMT_GRANT |
|||
|
CUBRID_STMT_REVOKE |
|||
|
CUBRID_STMT_STATISTICS |
|||
|
CUBRID_STMT_INSERT |
|||
|
CUBRID_STMT_SELECT |
|||
|
CUBRID_STMT_UPDATE |
|||
|
CUBRID_STMT_DELETE |
|||
|
CUBRID_STMT_CALL |
|||
|
CUBRID_STMT_GET_ISO_LVL |
|||
|
CUBRID_STMT_GET_TIMEOUT |
|||
|
CUBRID_STMT_GET_OPT_LVL |
|||
|
CUBRID_STMT_SET_OPT_LVL |
|||
|
CUBRID_STMT_SCOPE |
|||
|
CUBRID_STMT_GET_TRIGGER |
|||
|
CUBRID_STMT_SET_TRIGGER |
|||
|
CUBRID_STMT_SAVEPOINT |
|||
|
CUBRID_STMT_PREPARE |
|||
|
CUBRID_STMT_ATTACH |
|||
|
CUBRID_STMT_USE |
|||
|
CUBRID_STMT_REMOVE_TRIGGER |
|||
|
CUBRID_STMT_RENAME_TRIGGER |
|||
|
CUBRID_STMT_ON_LDB |
|||
|
CUBRID_STMT_GET_LDB |
|||
|
CUBRID_STMT_SET_LDB |
|||
|
CUBRID_STMT_GET_STATS |
|||
|
CUBRID_STMT_CREATE_USER |
|||
|
CUBRID_STMT_DROP_USER |
|||
|
CUBRID_STMT_ALTER_USER |
|||
|
T_CCI_CURSOR_POS |
enum |
CCI_CURSOR_FIRST |
|
|
CCI_CURSOR_CURRENT |
|||
|
CCI_CURSOR_LAST |
|||
|
T_CCI_TRAN_ISOLATION |
enum |
TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE |
|
|
TRAN_COMMIT_CLASS_COMMIT_INSTANCE |
|||
|
TRAN_REP_CLASS_UNCOMMIT_INSTANCE |
|||
|
TRAN_REP_CLASS_COMMIT_INSTANCE |
|||
|
TRAN_REP_CLASS_REP_INSTANCE |
|||
|
TRAN_SERIALIZABLE |
|||
|
T_CCI_PARAM_MODE |
enum |
CCI_PARAM_MODE_UNKNOWN |
|
|
CCI_PARAM_MODE_IN |
|||
|
CCI_PARAM_MODE_OUT |
|||
|
CCI_PARAM_MODE_INOUT |
Note If a string longer than defined max length is inserted (INSERT) or updated (UPDATE), the string will be truncated.