2012-11-05 125 views
1

我正在为C++编写SQL Server的扩展存储过程。可以使用srv_paramsetoutput()来设置nvarchar(max)或varchar(max)吗?

用户可以提供我可以使用srv_paramsetoutput()设置的OUT参数。但是,当我尝试设置TEXT,VARCHAR(max)或NVARCHAR(max)时,这似乎总是失败。请注意,VARCHAR(max)在内部被称为SRVBIGVARCHAR。

是否有一个常见的错误,我可以做或者是这些数据类型无法访问xproc当用作输出参数?

+0

扩展的过程已被弃用,并且永远不会支持新的MAX类型。使用CLR程序。 –

+0

我比C++更爱C#(当然),但安装经验更适合xprocs。此外,还有很多第三方软件依赖于他们,希望这些软件能够存在几年。 – Robin

+0

你怎么能说XP安装比组装好? * XP不包含在db *中。他们没有备份/恢复,他们在故障转移时丢失了! –

回答

0

扩展存储过程可以返回的最大长度值是8000(对于Varbinary或Varchar)或4000(对于nvarchar)。

+0

这个问题是关于在xprocs中使用'max'数据类型,而不是基本字符串类型可以拥有的最大长度。 – Robin

+0

我试过这样做,但它似乎不被支持,即使它是在C/C++头文件中定义的。 –

+0

是的,这就是我发现的。我只是忍受它,并改变了SQL端使用nvarchar(n)而不是nvarchar(max),然后决定将代码完全移出SQL Server! – Robin