Функция скалярного значения возвращает VARCHAR (MAX) в C ++ ADO (не .NET) - PullRequest
0 голосов
/ 15 марта 2011

Я создал скалярную функцию в MSSQL, которая возвращает VARCHAR (MAX).

Я использую CommandPtr (preCom), заполненный параметрами для функции, и я вызываю функцию со следующимвызов:

_variant_t vNull;
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
HRESULT hr = ptrCom->raw_Execute(&vNull, &vNull, adCmdStoredProc, &record_set);

Возвращаемое значение HRESULT равно DB_E_ERRORSINCOMMAND.

Если я изменяю возвращаемое значение с VARCHAR (MAX) на VARCHAR (8000), все работает нормально.Кто-нибудь есть идеи, как мне выполнить скалярную функцию, которая вернула VARCHAR (MAX)?

Спасибо!

1 Ответ

0 голосов
/ 15 марта 2011

См. Обновление приложения до собственного клиента SQL Server из MDAC :

Когда приложения MDAC подключаются к SQL Server, типы данных, представленные в SQL Server 2005, будут отображаться как SQLServer 2000-совместимые типы данных, как показано в следующей таблице.

SQL Server 2005 type SQL Server 2000 type
varchar(max)         text

Так что я думаю, если вы укажете text, это может сработать.

...