簡體   English   中英

EXEC SQL EXECUTE INTO不返回任何內容

[英]EXEC SQL EXECUTE INTO returns nothing

我正在使用C ++程序連接到SQL Server並獲取數據。 以下是代碼......

string temp = "SELECT WERT FROM AM_TABLE WHERE CD=\'" + prefix + "\'"; // prefix = BADGUN
strcpy((char*)stmt.arr, temp.c_str());
stmt.len = strlen((char*) stmt.arr );
stmt.arr[stmt.len]= '\0';

EXEC SQL DECLARE SELECTDATA STATEMENT;
EXEC SQL PREPARE SELECTDATA FROM :stmt;

cout << "Statement is :" << (char*)stmt.arr << endl;
// SELECT WERT FROM AM_TABLE WHERE CD='BADGUN'

if( sqlca.sqlcode != 0 )
{
    cout << "Code: " << sqlca.sqlcode << " Message: "<< (char*) sqlca.sqlerrm.sqlerrmc << endl;
}
EXEC SQL EXECUTE SELECTDATA INTO:mID;

if( sqlca.sqlcode != 0 )
{
    cout << "Code: " << sqlca.sqlcode << " Message: "<< (char*) sqlca.sqlerrm.sqlerrmc << endl;
}

cout << "mID: " << (char*)mID.arr) << endl;

一切都正確執行,沒有任何錯誤。 如果我手動執行查詢,則查詢將按預期返回ID。 但是在上面的程序中,變量mID什么mID包含。

我在這里犯了什么錯嗎?

編輯

我也試過......

string temp = "\'" + prefix + "\'";
strcpy((char*)stmt.arr, temp.c_str());
stmt.len = strlen((char*) stmt.arr );
stmt.arr[stmt.len]= '\0';
EXEC SQL SELECT WERT INTO:mID
    FROM AM_TABLE 
    WHERE CD=:stmt;
if( sqlca.sqlcode != 0 )
{
    cout << "Code: " << sqlca.sqlcode << " Message: "<< (char*) sqlca.sqlerrm.sqlerrmc << endl;
}  

但沒有成功......

但當我硬編碼stmt的值時...

EXEC SQL SELECT WERT INTO:mID
    FROM AM_TABLE 
    WHERE CD='BADGUN';
if( sqlca.sqlcode != 0 )
{
    cout << "Code: " << sqlca.sqlcode << " Message: "<< (char*) sqlca.sqlerrm.sqlerrmc << endl;
}  

我能夠獲得價值。 我不能在這里硬編碼,因為該stmt變量值是動態的。 我想我犯了一個愚蠢的錯誤。 但無法找到答案。 提前致謝。

我認為問題在於聲明

EXEC SQL EXECUTE SELECTDATA INTO:mID;

哪個應該被替換

EXEC SQL SELECT DATA INTO :mID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM