Выполните хранимую процедуру оракула, используя otl в переполнении стека

У меня есть очень простая хранимая процедура, которая ниже:

CREATE OR REPLACE PROCEDURE rc_name (id IN NUMBER, name OUT VARCHAR)
IS
BEGIN
SELECT receivable_class_name INTO name
FROM receivableclass WHERE receivable_class_id = id;
END;
/

Я выполняю это в sqlplus используя ниже:

DECLARE
B VARCHAR(100);
BEGIN
RC_NAME(99,B);
dbms_output.put_line('The rc class is ' ||B);
END;
/

Это выполняется отлично и выводит значение на консоль.

Теперь с помощью otl я хотел бы вызвать эту хранимую процедуру. ниже функция.

void stored_proc(void)
{

int a=99;
char b[51];

try{

static otl_stream* mpOtltestProc;

static string testproc =  "BEGIN""RC_NAME(:a<int>,:b<char[51]>)""END;";
if (mDbConnection == NULL)
mDbConnection = dbCxnManager::getConnection();
mpOtltestProc = new otl_stream(1, testproc.c_str(), *mDbConnection);*mpOtltestProc<<a;
*mpOtltestProc>>b;
}
catch(otl_exception &p)
{
ORACLE_ERROR;
}

cout<<"B="<<b<<endl;

}

Проблема, с которой я сталкиваюсь, состоит в том, что я не получаю этот отпечаток печати правильное значение.
Его печатный мусор.

Кто-нибудь может помочь мне определить, что я здесь делаю неправильно.

1

Решение

Задача ещё не решена.

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

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

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