EXEC SQL EXECUTE INTO ничего не возвращает

Я использую программу 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;

Все выполнено правильно, без ошибок. Если я выполняю запрос вручную, запрос возвращает идентификатор, как и ожидалось. Но в приведенной выше программе, переменная 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 значение переменной является динамическим.
Я думаю, что я делаю глупую ошибку. Но не в состоянии выяснить.
Заранее спасибо.

1

Решение

Я думаю, что проблема с утверждением

EXEC SQL EXECUTE SELECTDATA INTO:mID;

который должен быть заменен

EXEC SQL SELECT DATA INTO :mID
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]