ADO DB + Oracle provider + массив строк в качестве параметра
От: tdiff  
Дата: 26.11.15 15:15
Оценка:
Пытаюсь выполнить на сервере хранимку, одним из параметров которой является string_array (nested_table с одной колонкой VARCHAR2(100)), но нигде не смог найти информации, поддерживает Oracle OLE DB provider передачу массива в качестве параметра SP или нет.
Если кто-то знает, где посмотреть, подскажите пожалуйста. Или кому-то уже удавалось это провернуть, буду рад совету.

Сейчас делаю вот так:

  код
SAFEARRAY* arr = SafeArrayCreateVector(VT_BSTR, 0, 1);
LONG idx = 0;
_bstr_t text = _bstr_t("test");
HRESULT res = SafeArrayPutElement(arr, &idx, text.GetBSTR());

_variant_t arg;
arg.vt = VT_ARRAY | VT_BSTR;
arg.parray = arr;

ADODB::DataTypeEnum type = static_cast<ADODB::DataTypeEnum>(ADODB::adArray | ADODB::adVarChar);
cmd->CommandText = "STORED_PROC_NAME";
cmd->Parameters->Append(cmd->CreateParameter(_bstr_t("INPUT_ARRAY"), type, ADODB::adParamInput, 128, arg));

ADODB::_RecordsetPtr rs(__uuidof(ADODB::Recordset));
rs = cmd->Execute(NULL, NULL, ADODB::adCmdStoredProc);


Получаю ошибку "Provider: -Requested conversion is not supported"


Вообще, ADO умеет передавать такие довольно сложные типы?
Отредактировано 26.11.2015 17:53 tdiff . Предыдущая версия . Еще …
Отредактировано 26.11.2015 17:52 tdiff . Предыдущая версия .
Отредактировано 26.11.2015 17:28 tdiff . Предыдущая версия .
Отредактировано 26.11.2015 16:08 tdiff . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.