std::string для oracle какой тип?

Роскошный
Дата: 06.10.2015 18:48:10
В dll'ке есть функция которая на вход принимает строку и вернуть должна строку

extern "C" __declspec(dllexport) std::string test2(std::string val) {
	return val + " abcdefg";
}


Заворачиваю ее в такой вид

create or replace FUNCTION test2(val in varchar2)
return varchar2
as external
	LANGUAGE c
	library my
	name "test2"
	parameters (val STRING, return STRING);

При вызове этой функции выдает ORA-28576: lost RPC connection to external procedure agent

Делаю такую аналогичную функцию с другим типом
extern "C" __declspec(dllexport) int test(int val) {
	return val + 10;

}


Обертка:
create or replace FUNCTION test(val in pls_integer)
return pls_integer
as external
	LANGUAGE c
	library my
	name "test"
	parameters (val int, return int);


В этом случае все прекрасно работает.
девелопер гайд
Дата: 06.10.2015 18:57:52
Роскошный,

Для работы с объектными типами нужен специальный маппинг. Да и с 0-конченными строками, нужно память выделять под результат через oci-контекст.
Elic
Дата: 06.10.2015 19:09:03
Роскошный
Дата: 06.10.2015 22:26:44
Поделитесь пожалуйста примером
mcureenab
Дата: 06.10.2015 22:45:04
В C'шиной функции для параметра внешнего типа STRING нужно использовать тип char *.