Пытаюсь выполнить на сервере хранимку, одним из параметров которой является 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 умеет передавать такие довольно сложные типы?