直接设置nvarchar()类型支持的最大值4000,nvarchar为变长类型,不足该长度则返回实际长度,超过该长度则返回前4000字符。
CREATE FUNCTION dbo.sayHello ()
RETURNS nvarchar(4000) 
AS
BEGIN
   RETURN ("您好,世界" )
END

解决方案 »

  1.   

    varchar[(n)]
    长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
    nvarchar(n)
    包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。
      

  2.   

    返回一个未知长度的字符串(非常大)----->有多大?
    函数也能返回表的!varchar[(n)]长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
      

  3.   

    RE:
    返回一个未知长度的字符串(非常大)----->有多大?还是那句话: 未知...
    能当作∞处理吗?谢谢!
      

  4.   

    还是那句话: 未知...
    能当作∞处理吗?谢谢!
    ----------------------------------------------------------------------------------------------------------------------------
    不能,varchar()支持的最大长度是8000字节;即便是text类型,最大也只支持2GB,况且函数似乎不能返回text类型。
      

  5.   

    RE:
    返回一个未知长度的字符串(非常大)----->有多大?还是那句话: 未知...
    能当作∞处理吗?谢谢!
    ---------------------------------------------
    这样处理行吗??CREATE FUNCTION dbo.sayHello()
    RETURNS @t table(Texts text) 
    AS
    BEGIN
       INSERT INTO @T SELECT '您好,世界'
       RETURN
    ENDtext服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。
      

  6.   

    @t 表占内存,不与磁盘发生I/O操作。效率还可以!:)
      

  7.   

    RE:@t 表占内存,不与磁盘发生I/O操作。效率还可以!:)感谢您的指导~ 我以前还以为它占的是磁盘呢! 结贴!