2011-03-15 71 views
0

我在MSSQL中创建了一个返回VARCHAR(MAX)的标量值函数。标量值函数在C++ ADO(不是.NET)中返回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)的标量值函数?

谢谢!

回答

0

Updating an Application to SQL Server Native Client from MDAC

当MDAC应用程序连接到SQL Server,SQL Server 2005中引入的数据类型,会出现与SQL Server 2000兼容的数据类型,如图所示下表。

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

所以我想如果你可以指定text,它可能工作。

+0

嘿,感谢您的帮助:-) 当我试图设置文本为返回的数据类型,我从SQL收到此错误: “文本数据类型是返回值无效。” :-( – TCS 2011-03-15 17:15:41

+0

@strDisplayName - 那么我认为你必须从ADO中继续,它不能理解'varchar(max)'。现代编程接口是SQL Native Client,我已经很方便地提供了一个链接到文档: - | – 2011-03-15 18:45:57

+0

感谢您的帮助:-) – TCS 2011-03-15 22:20:46