// 根据SQL查询取数据,这里是针对关系型数据库的接口 CSqlResult *COracleDB::Select( const char *sql ) { OracleResult *result = new OracleResult; if ( result == NULL ) return NULL ; int ret = oracle_select( sql, result ); if ( ret != DB_ERR_SUCCESS ) { OUT_ERROR( NULL, 0, "Oracle", "Select sql: %s, result %d", sql, ret ); delete result ; return NULL ; } return result ; }
static int oracle_check_conn(void *conn) { Octstr *sql; List *res; int ret; /* TODO Check for appropriate OCI function */ sql = octstr_create("SELECT 1 FROM DUAL"); ret = oracle_select(conn, sql, NULL, &res); if (ret != -1 && gwlist_len(res) > 0) { List *row = gwlist_extract_first(res); gwlist_destroy(row, octstr_destroy_item); } if (ret != -1) gwlist_destroy(res, NULL); octstr_destroy(sql); return ret; }
static int oracle_check_conn(void *theconn) { int ret; #ifdef HAVE_OCIPING struct ora_conn *conn = (struct ora_conn*) theconn; sword result; gw_assert(conn != NULL); result = OCIPing(conn->svchp, conn->errhp, OCI_DEFAULT); if (result != OCI_SUCCESS) { oracle_checkerr(conn->errhp, result); ret = -1; } else { ret = 0; } #else Octstr *sql; List *res; /* TODO Check for appropriate OCI function */ sql = octstr_create("SELECT 1 FROM DUAL"); ret = oracle_select(conn, sql, NULL, &res); if (ret != -1 && gwlist_len(res) > 0) { List *row = gwlist_extract_first(res); gwlist_destroy(row, octstr_destroy_item); } if (ret != -1) gwlist_destroy(res, NULL); octstr_destroy(sql); #endif return ret; }