Форум: "Базы";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
ВнизКак передать русскую строку в ХП на MS SQL 2005 из D7 Найти похожие ветки
← →
Int23 (2008-03-21 15:01) [0]Есть приложение, написанное на Д7 и работающее с SQL 2005. Счас перевожу на 2005. Есть ХП у которой параметр объявлен так @Tag varchar(1000)=null. Пытаюсь из клиенсткого приложения выхвать эту ХП. И создаю параметр SP.AddParam_("@Tag", pdInput, ftString, 500, 0, Tag);
Затем присваиваю значение так
SP.Parameters.ParamByName("@Tag").Value := Tag;
Если Tag содержит русские буквы, то при просмотре SP.Parameters.ParamByName("@Tag").Value показует что там иероглифы. А для англ строки всё работает. В чём грабли?
← →
Правильный_Вася (2008-03-21 15:07) [1]а varchar для русских подходит?
мож, нужно nvarchar?
← →
Int23 (2008-03-21 15:10) [2]Нет. varchar работает. Пробовал вызвать хп на сервере (SSMS)
← →
Правильный_Вася (2008-03-21 15:36) [3]ADO ?
← →
Int23 (2008-03-21 16:06) [4]Да, ADO. Вот нашёл описание проблемы http://delphikingdom.com/asp/answer.asp?IDAnswer=59812 . Только решения там обходное. Мне такое не подходит.
И самое интересное пишу код
Prm:=SP.Parameters.ParamByName("@Tag").ParameterObject;
Prm.Value:="Строка";
После присоения появляются иероглифы :(
← →
----------------------------- (2008-03-21 16:09) [5]Prm.Value:=WideStriing("Строка")
?
← →
Johnmen © (2008-03-21 16:10) [6]На заголовок ХП можно глянуть?
← →
Int23 (2008-03-21 16:21) [7]>>Prm.Value:=WideStriing("Строка")
Не полегчало :(
Заголовок
CREATE procedure dbo.MyProc
@Security xml=null
,@ActionId varchar(5)="view"
,@ActIdObj varchar(5)=null
,@axObjectName varchar(512)=null
,@Tag varchar(1000)=null
,@Blob image=null
,@ObjectNo bigint=null
← →
Правильный_Вася (2008-03-21 16:43) [8]в параметрах подключения выставлены настройки локали?
совпадают ли с ожидаемыми в БД?
← →
sniknik © (2008-03-21 16:52) [9]> И создаю параметр
нафига? сам он создаст его наверняка правильнее
> После присоения появляются иероглифы :(
> А для англ строки всё работает.
обыкновенное чудо...
проверь
CREATE procedure MyProc
@RysSt varchar(50),
@LatSt varchar(50)
AS
SELECT @RysSt COLLATE Cyrillic_General_CI_AS, @LatSt COLLATE Latin1_General_CS_AS
и выполнить варианты, посмотреть что вернет
MyProc "Строка", "Строка"
MyProc "String", "String"
чудо...
← →
Int23 (2008-03-21 17:08) [10]sniknik
Ды вы прям фокусник :) Т.е. у меня проблема с коннекшином. надо коллате настроить. А как это сделать?
← →
Int23 (2008-03-21 17:19) [11]На базе стоит Cyrillic_General_CI_AS, а в ConnectionString я ничего не прописываю. Как прописать?
← →
Int23 (2008-03-21 17:42) [12]Вообщем разобрался. Ошибка была у меня...... Watch показует иероглифы, но на скл посылается правильный запрос (сморел в Профилере). Пора отдыхать.....
← →
sniknik © (2008-03-21 19:48) [13]> Ошибка была у меня......
ага. тут
>> И создаю параметр
> нафига? сам он создаст его наверняка правильнее
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.032 c