Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема с работой через ODBC / 5 сообщений из 5, страница 1 из 1
16.11.2010, 14:34
    #36959495
Victor_V_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с работой через ODBC
Помогите пожалуста решить проблему

Имеется хранимая процедура написанная на COS. Обнаружилось следующее:
на сервере под Windows данные возвращаемые процедурой нормальные
на сервере под Unix данные возвращаемые процедурой почему то в какой то другой кодировке.

Вместо русских символов что то непонятное.
На сервере под Unix были написаны две тестовые хранимые процедуры одна на SQL, другая на
COS
Процедура на SQL работает нормально, а процедура на COS почему то возвращает данные в
другой кодировке.
Клиентская программа работает в 1С и вызов хранимой процедуры производится через ADO
RecordSet.

Версия Cache:
Cache for UNIX (Solaris UltraSPARC/64-bit) 5.0.21 (Build 6408 + Adhoc 3745)

Вот текст тестовых процедур:

Query TestProcSQL() As %SQLQuery [ SqlProc ]
{
SELECT ID,NameLp FROM MTSLp
}

Query TestProcCOS() As %Query(ROWSPEC = "ID:%Integer,NameLp:%String") [ SqlProc ]
{
}
...
Рейтинг: 0 / 0
21.11.2010, 19:13
    #36968424
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с работой через ODBC
Victor_V_S,

Судя по версии Caché, она у Вас 8-битная.

Возможно, в случае с SQL происходит неявная перекодировка строк (см. параметр SELECTMODE у Query, а также SQL-функции %EXTERNAL, %INTERNAL, %ODBCIN, %ODBCOUT ).

PS: воспроизводится ли поведение в новых версиях Caché?
...
Рейтинг: 0 / 0
22.11.2010, 11:58
    #36969255
Victor_V_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с работой через ODBC
Как работает на новых версиях, сказать не могу.
Если в SQL запросе происходит неявная перекодировка, то как можно подобную перекодировку сделать в запросе на COS ?
...
Рейтинг: 0 / 0
22.11.2010, 12:10
    #36969293
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с работой через ODBC
$zconvert

Например:
Код: plaintext
1.
2.
w $zcvt("Тест","O","CP866")
w $zcvt("Тест","O","CP1251")
...
Рейтинг: 0 / 0
22.11.2010, 15:01
    #36969811
Victor_V_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с работой через ODBC
Это не помогло.
Тестировал на ODBC View. Все то же самое. Что характерно, похоже не понимает тип данных %String.
Если:
ClassMethod TestProcCOSFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = TestProcCOSExecute ]
{
s $li(Row,1)="123"
Quit $$$OK
}

Query TestProcCOS() As %Query(ROWSPEC = "NAME:%Integer") [ SqlProc ]
{
}


то цифры выводятся нормально

Если
Query TestProcCOS() As %Query(ROWSPEC = "NAME:%String") [ SqlProc ]
{
}
то даже строка из цифр не выводится.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема с работой через ODBC / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]