0
我正在使用下面的代碼來獲取oracle表中的列數。使用'Proc C-C``獲取表中的列數
char selectQuery[30000] = {'\0'};
strcpy(selectQuery, "SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME=\'");
strcat(selectQuery, tableName);
strcat(selectQuery, "\'");
strcpy((char*) stmt.arr, selectQuery);
stmt.len = strlen((char*) stmt.arr);
stmt.arr[stmt.len]= '\0';
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL WHENEVER NOT FOUND CONTINUE;
EXEC SQL DECLARE SELECTCOLNU STATEMENT;
EXEC SQL PREPARE SELECTCOLNU FROM :stmt;
if(sqlca.sqlcode != 0)
{
DEBUG_LOG("SQL-ERR:Preparation of SELECT Query to get number of columns failed: Ora-Err: %d %s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);
return PREPARATION_FAILURE;
}
EXEC SQL EXECUTE SELECTCOLNU INTO:columnsNo;
if(sqlca.sqlcode < 0)
{
DEBUG_LOG("SQL-ERR:Execute failed: Ora-Err: %d %s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);
return EXECTUION_FAILURE;
}
DEBUG_LOG("Number of columns: %d\n", columnsNo);
當我執行的代碼,它不給任何錯誤,但我得到「列數:0」作爲輸出。 我指的表中有幾列。
我在這裏做錯了什麼嗎?
下面是聲明部分......在C-串
EXEC SQL BEGIN DECLARE SECTION;
int columnsNo;
VARCHAR stmt[MAX_SQL];
EXEC SQL END DECLARE SECTION;
我用「sprintf」來準備查詢,它被成功執行了。但是,我仍然得到0列的數量。 – NJMR
Sory,我不「說」嵌入式SQL。但我注意到你告訴SQL忽略錯誤。你現在可能不會得到可以幫助你的錯誤/警告。 –
由於「if(sqlca.sqlcode == 1403)break」,我得到一個錯誤;「沒有循環。因此我忽略了這些錯誤。 – NJMR