T-SQL游标编码

时间:2014-03-05 15:27:27

标签: sql-server tsql

我有一个带有西里尔文字列的表格。我想迭代表并逐个处理行。

DECLARE @safeSize VARCHAR(50) 
DECLARE @safeId   INT 


DECLARE db_cursor CURSOR FOR  
  select coalesce(s.id,0), coalesce(s.size,'-')
    from old_nom_trezor s
    order by s.id

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @safeId, @safeSize

WHILE @@FETCH_STATUS = 0   
BEGIN   
       print @safeSize -- prints ???
       print @safeId   -- prints ???

       --Insert statement with the vars. Also inserts ?

       FETCH NEXT FROM db_cursor INTO @safeId, @safeSize
END   

CLOSE db_cursor   
DEALLOCATE db_cursor

问题是西里尔符号打印为?,如果我将它们插入其他表格,结果为?。 Management studio中的简单选择显示正确的符号。我怎样才能用西里尔语取出西里尔符号?

1 个答案:

答案 0 :(得分:3)

西里尔文本由unicode字符组成,不能以VARCHAR数据类型存储。

更改此DECLARE @safeSize VARCHAR(50) 这个DECLARE @safeSize NVARCHAR(50)