以下是我写的语句:
declare my_cursor cursor scroll 
for
SELECT DISTINCT  mon.SerialNo, site.OtherName, mon.Name,
      (SELECT     eName
        FROM          CWOCcode
        WHERE      (codeTypeId = 'category') AND (mon.CategoryID = codeId)) AS codeename,
      (SELECT     aName
        FROM          CWOCcode AS CWOCcode_1
        WHERE      (codeTypeId = 'category') AND (mon.CategoryID = codeId)) AS codeaname, mon.MonumentID
       FROM MWOCmon AS mon INNER JOIN AWOMsite AS site ON mon.MonumentID = site.SiteID
       WHERE  (mon.LanguageType = 'e')  ORDER BY mon.Nameopen my_cursor
declare @SerialNo1 varchar(7), @OtherName1 varchar(40), @Name1 varchar(40), @codeename1 varchar(40), @codeaname1 varchar(40), @MonumentID1 int,@bb int,@first1 int
fetch next from my_cursor into @SerialNo1, @OtherName1, @Name1, @codeename1, @codeaname1, @MonumentID1
fetch first from my_cursor into @SerialNo1, @OtherName1, @Name1, @codeename1, @codeaname1, @first1
while(@@fetch_status=0)
begin
set @bb=84
if(@first1!=@bb)
fetch next from my_cursor into @SerialNo1, @OtherName1, @Name1, @codeename1, @codeaname1, @MonumentID1
print @MonumentID1
if (@MonumentID1=@bb) 
break
if(@first1=@bb)
fetch next from my_cursor into @SerialNo1, @OtherName1, @Name1, @codeename1, @codeaname1, @MonumentID1
end fetch prior from my_cursor into @SerialNo1, @OtherName1, @Name1, @codeename1, @codeaname1, @MonumentID1
select @SerialNo1 as SerialNo, @OtherName1 as OtherName, @Name1 as Name, @codeename1 as codeename, @codeaname1 as codeaname, @MonumentID1 as MonumentIDclose my_cursor
deallocate my_cursor因为是程序后加的功能,别的方法都不是很好使。

解决方案 »

  1.   

    把变量都声明为NVARCHAR()/NCHAR类型,Unicode数据类型可以实现你的要求。
      

  2.   


    nchar 和 nvarchar
    nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。nchar(n)包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为 national char 和 national character。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。注释
    如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。如果希望列中所有数据项的大小接近一致,则使用 nchar。如果希望列中数据项的大小差异很大,则使用 nvarchar。使用 nchar 或 nvarchar 的对象被赋予数据库的默认排序规则,除非使用 COLLATE 子句赋予特定的排序规则。SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar。SET ANSI_PADDING ON 永远适用于 nchar 和 nvarchar。