Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Русский текст в переменной курсора  [new]
MaxOz
Member

Откуда:
Сообщений: 20
Вопрос косвенно затрагивается во многих темах, но четкого ответа так и не нашел.

Итак, имеется база, collation name: Latin1_General_CI_AS.
Таблица, столбец которой (собственно как и все все текстовые столбцы в ее таблицах) тоже COLLATE Latin1_General_CI_AS.

Необходимо через курсор обрабатывать(копировать, перекидывать в другие таблицы значения и т.п.) подобные столбцы. Данные в этих столбцах на русском языке. При копировании их в другую таблицу через курсор, вставляются одни знаки вопросов. При выводе содержимого переменных курсора тоже одни знаки вопросов.

подскажите каким образом корректно (чтобы выводилось все в на русском языке) выхватить данные курсором?

Пример реализации:

declare @aaa varchar(25),
@bbb varchar(50),

declare ccc cursor for
select ddd, eee
from fff
where ggg=xxx
open ccc
fetch next from ccc
into @aaa, @bbb
while @@fetch_status=0

begin
print ‘aaa='+@aaa+’bbb=’+@bbb
fetch next from ccc
into @aaa, @bbb
end

close ссс
deallocate ссс
17 сен 09, 21:08    [7676064]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36817
И какой же тип данных у полей ddd и eee?

Сообщение было отредактировано: 17 сен 09, 21:18
17 сен 09, 21:17    [7676085]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
MaxOz
Member

Откуда:
Сообщений: 20
Гавриленко Сергей Алексеевич
И какой же тип данных у полей ddd и eee?


varchar(25) и varchar(50) соответственно
17 сен 09, 21:42    [7676135]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
MaxOz
Member

Откуда:
Сообщений: 20
Неужели никак нельзя решить проблемы?
18 сен 09, 17:22    [7680761]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
Glory
Member

Откуда:
Сообщений: 104760
MaxOz
Неужели никак нельзя решить проблемы?

А как вы в поле varchar(25)/varchar(50) с collation name: Latin1_General_CI_AS умудряетесь хранит русские буквы ??
18 сен 09, 17:26    [7680785]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
MaxOz
Member

Откуда:
Сообщений: 20
Glory
А как вы в поле varchar(25)/varchar(50) с collation name: Latin1_General_CI_AS умудряетесь хранит русские буквы ??


Да как-то хранятся и не жалуются. ))) Вообще с БД работает программа, я лишь пытаюсь выцапать данные из нее. Используя просто select-ы, updat-ы, insert-ы, все получается замечательно (кстати, программа работает с данными в этих полях вроде через N'xxx'), но при использовании курсора появляется вышеописанная проблема.
18 сен 09, 17:38    [7680856]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
Glory
Member

Откуда:
Сообщений: 104760
MaxOz
Glory
А как вы в поле varchar(25)/varchar(50) с collation name: Latin1_General_CI_AS умудряетесь хранит русские буквы ??


Да как-то хранятся и не жалуются. ))) Вообще с БД работает программа, я лишь пытаюсь выцапать данные из нее. Используя просто select-ы, updat-ы, insert-ы, все получается замечательно (кстати, программа работает с данными в этих полях вроде через N'xxx'), но при использовании курсора появляется вышеописанная проблема.

N'xxx' - это вообще-то тип nvarchar/nchar
18 сен 09, 17:46    [7680911]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
MaxOz
Member

Откуда:
Сообщений: 20
Glory
N'xxx' - это вообще-то тип nvarchar/nchar

Блин, а ларчик-то просто открывался, спасибо огромное!
18 сен 09, 17:50    [7680930]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
Glory
Member

Откуда:
Сообщений: 104760
MaxOz
Glory
N'xxx' - это вообще-то тип nvarchar/nchar

Блин, а ларчик-то просто открывался, спасибо огромное!

Вообще то вас спрашивали про тип полей таблицы.
18 сен 09, 17:51    [7680938]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
MaxOz
Member

Откуда:
Сообщений: 20
Glory
Вообще то вас спрашивали про тип полей таблицы.

Не так понял вопрос и, пардон, невнимательно посмотрел на описание полей, поздно уже было...
18 сен 09, 17:54    [7680960]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Glory, а как возможность хранить русские буквы связана с COLLATE?
Я считал, что COLLATE определяет только правила сравнения символов.
Чувствую, что был неправ, но всё же, что думаете по этому поводу?
18 сен 09, 18:26    [7681113]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
Tako
Member

Откуда:
Сообщений: 65
Я не Glory, но может мой ответ Вас тоже удовлетворит.
Задавая collation, вы определяете code page для nonUnicode данных и порядок сортировки Unicode и nonUnicode данных. Т.е. если у вас столбец nchar/nvarchar, то кодовая страница не важна, а если char/varchar, то сервер считает, что в столбце данные с кодировкой cpXXXX (например, cp1251 для кириллицы, список кодировок)
При этом у разных collation может быть одна кодировка, но разные правила сортировки.
Как то так :)
18 сен 09, 21:40    [7681606]     Ответить | Цитировать Сообщить модератору
 Re: Русский текст в переменной курсора  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Tako
Я не Glory, но может мой ответ Вас тоже удовлетворит.
Задавая collation, вы определяете code page для nonUnicode данных и порядок сортировки Unicode и nonUnicode данных. Т.е. если у вас столбец nchar/nvarchar, то кодовая страница не важна, а если char/varchar, то сервер считает, что в столбце данные с кодировкой cpXXXX (например, cp1251 для кириллицы, список кодировок)
При этом у разных collation может быть одна кодировка, но разные правила сортировки.
Как то так :)
Cпасибо.
18 сен 09, 21:54    [7681644]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить