powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE12-15,Windows,Perl
25 сообщений из 28, страница 1 из 2
ASE12-15,Windows,Perl
    #38851357
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
Помогите подружить этих товарищей:
ASE12-15,Windows,Perl
Пробовал установить DBD::Sybase, что то не вышло, насколько я понял этот модуль только под Linux.
И можно вдобавок примеров использования парочку?
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38851464
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukПомогите подружить этих товарищей:
ASE12-15,Windows,Perl
Пробовал установить DBD::Sybase, что то не вышло, насколько я понял этот модуль только под Linux.
И можно вдобавок примеров использования парочку?

на сколько я знаю, не только для линукс.

что конкретно не получается?
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38851555
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASE свои odbc-ные драйвера наверное поставил, так что можно задействовать этот интерфейс...
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855491
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
MasterZiv,

не ставится модуль с помощью dmake
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: dbdimp.o: bad reloc address 0x4 in section `.data'
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
dmake.EXE: Error code 129, while making 'blib\arch\auto\DBD\Sybase\Sybase.xs.dll'
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855492
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
Sergey OrlovASE свои odbc-ные драйвера наверное поставил, так что можно задействовать этот интерфейс...

был бы признателен за подробности
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855494
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
MasterZivxukПомогите подружить этих товарищей:
ASE12-15,Windows,Perl
Пробовал установить DBD::Sybase, что то не вышло, насколько я понял этот модуль только под Linux.
И можно вдобавок примеров использования парочку?

на сколько я знаю, не только для линукс.

что конкретно не получается?


пробовал поставить на разных машинах, под xp, под 8-кой, правда все под strawberry perl
ошибка такая:

C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: dbdimp.o: bad reloc address 0x4 in section `.data'
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
dmake.EXE: Error code 129, while making 'blib\arch\auto\DBD\Sybase\Sybase.xs.dll'
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855648
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xuk,

ActiveState Perl не пробовал?
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855651
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukSergey OrlovASE свои odbc-ные драйвера наверное поставил, так что можно задействовать этот интерфейс...

был бы признателен за подробности

Согласно http://search.cpan.org/dist/DBD-Sybase/dbd-sybase.pod

DBD::Sybase не использует ODBC.
Так что сообщение было просто не в тему.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855652
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukMasterZiv,

не ставится модуль с помощью dmake
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: dbdimp.o: bad reloc address 0x4 in section `.data'
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
dmake.EXE: Error code 129, while making 'blib\arch\auto\DBD\Sybase\Sybase.xs.dll'

Что такое dmake -- я не знаю, кто такой strawberry perl -- тоже, но это явно ошибки С-шного сборщика.
Возможно, твой Perl использует другие форматы объектных модулей, чем библиотека OpenClient, поставляемая под Windows
(она собирается под VisualC).
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855653
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xuk,

http://strawberryperl.com/ Strawberry Perl is a perl environment for MS Windows containing all you need to run and develop perl applications. It is designed to be as close as possible to perl environment on UNIX systems.

It includes perl binaries, compiler ( gcc ) + related tools, all the external libraries (crypto, math, graphics, xml ...), all the bundled database clients and all you expect from Strawberry Perl.

Из этого видно, что Strawberry Perl использует GCC как компилятор, а его объектные модули не всегда совместимы с объектными модулями, собранными в MSVC.

Так что просто попробуй ActiveStatePerl.

У меня как-то давно всё это работало.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855663
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivxukпропущено...
был бы признателен за подробности
Согласно http://search.cpan.org/dist/DBD-Sybase/dbd-sybase.pod
DBD::Sybase не использует ODBC.
Так что сообщение было просто не в тему.
Так и не надо dbd::Sybase, тут просто dbi:odbc, винда все-таки.
Выбор Strawberry Perl очевидно из-за 64-битной архитектуры, если это не критично. то лучше использовать ActivePerl, он хоть совместим со CPAN, и модули может ставить оттуда...
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38855682
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ActiveState - нельзя использовать in corporate environment. Раньше было можно. Сейчас нельзя.
По этой причине я перешел на strawberry...

В обоих вариантах Перла можно использовать sybperl пакет. Версия 2.18 прекрасно собирается через gcc и прекрасно работает.

Сложности:
1) OpenClient библиотека (которая собственно и есть интерфейс к ASA) идет с настройками для VS и Borland. Для того чтобы можно было использовать OC с gcc - нужно пойти в каталог %SYBASE%/%SYBASE_OCS%/include найти там cspublic.h (кажется), найти в нем секцию которая объявляет макрос для внешних функций DLL и добавить проверку на mingw в пару к VS и Borland.
2) Надо пойти в %SYBASE%/%SYBASE_OCS%/lib и скопировать все *.lib в *.a.
3) Если у вас OC 15 и dll зовутся libsybcs.dll и подобное, то надо пойти в несколько подкаталогов в %sybper%/*, Найти там соответсвующие Makefile.pl и поправить регулярку поиска библиотек. Так же надо поправить процедуру определения версии OC.
4) Очень не желательно использовать 64-х битную версию strawberry. Не помню сейчас почему конкретно, но подружить sybperl с ней я так и не смог. Зато на 32-х битный все встало с трех вышеупомянутых напильников.

Сразу предупрежу, что у меня так и не получилось завести асинхронный режим в Strawberry. В ActiveState он работал замечательно, а под strawberry на проверке готов асинхронный запрос или нет - перл умирает без единого вяка (даже без GPF). Но пока оно мне было не сильно нужно, плюнул и не стал копать.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38859811
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
White OwlActiveState - нельзя использовать in corporate environment. Раньше было можно. Сейчас нельзя.
По этой причине я перешел на strawberry...

В обоих вариантах Перла можно использовать sybperl пакет. Версия 2.18 прекрасно собирается через gcc и прекрасно работает.

Сложности:
1) OpenClient библиотека (которая собственно и есть интерфейс к ASA) идет с настройками для VS и Borland. Для того чтобы можно было использовать OC с gcc - нужно пойти в каталог %SYBASE%/%SYBASE_OCS%/include найти там cspublic.h (кажется), найти в нем секцию которая объявляет макрос для внешних функций DLL и добавить проверку на mingw в пару к VS и Borland.
2) Надо пойти в %SYBASE%/%SYBASE_OCS%/lib и скопировать все *.lib в *.a.
3) Если у вас OC 15 и dll зовутся libsybcs.dll и подобное, то надо пойти в несколько подкаталогов в %sybper%/*, Найти там соответсвующие Makefile.pl и поправить регулярку поиска библиотек. Так же надо поправить процедуру определения версии OC.
4) Очень не желательно использовать 64-х битную версию strawberry. Не помню сейчас почему конкретно, но подружить sybperl с ней я так и не смог. Зато на 32-х битный все встало с трех вышеупомянутых напильников.

Сразу предупрежу, что у меня так и не получилось завести асинхронный режим в Strawberry. В ActiveState он работал замечательно, а под strawberry на проверке готов асинхронный запрос или нет - перл умирает без единого вяка (даже без GPF). Но пока оно мне было не сильно нужно, плюнул и не стал копать.




Можно поподробнее про пункт 1 и 3, с Си совсем не дружу, а в %sybper%/Makefile.pl регулярку не нашел, которая ищет библиотеки.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38860020
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukМожно поподробнее про пункт 1 и 3, с Си совсем не дружу, а в %sybper%/Makefile.pl регулярку не нашел, которая ищет библиотеки.Тогда в морг.
Проще и надежнее будет использовать DBD:ODBC.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38861924
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
Дайте пожалуйста пример скрипта с подключением через ODBC к удаленной базе, у меня это впервые.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38862056
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38950254
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
Все прикрутил с помощью ODBC, все отлично было, пока не заметил такую штуку:

вызывается встроенная процедура внутри которой динамический SQL, так вот ту часть процедуры которая в курсоре ОДБЦ обрабатывает корректно, а ту которая за пределами нет. если запустить процедуру с помощью ISQL то все отлично.

пример:

процедура начало--

динамический sql 1

<курсор
динамический sql 2
конец курсора>

процедура конец--


вот где динамический sql 1
@a = 'select @b = xxx from aaa'
exec @a

после его выполнения @b = null
а isql выбирает туда значение корректно.


выносил динамический sql 1
в отдельную процедуру, эффект тот же.

Помогите кто знает?
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38950289
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
метедом тыка выяснил, что внутри процедуры не отрабатывает присвоение переменных
например:
set @a = select aaa from xxx
set @a = (select aaa from xxx)
select @a = aaa from xxx

@a в любом случае NULL,
isql соответственно работает без ошибок.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38950367
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukВсе прикрутил с помощью ODBC, все отлично было, пока не заметил такую штуку:

вызывается встроенная процедура внутри которой динамический SQL, так вот ту часть процедуры которая в курсоре ОДБЦ обрабатывает корректно, а ту которая за пределами нет. если запустить процедуру с помощью ISQL то все отлично.Чушь. ODBC не разбирается что находится внутри процедуры. На сервер уходит команда "запустить", а потом драйвер сидит и ждет ответа. Все.
Если процедура работает в isql - она будет работать в ODBC. Если ты видишь волшебные чудеса - значит ты чего-то не видишь.

xukвот где динамический sql 1
@a = 'select @b = xxx from aaa'
exec @aЭто что за синтаксис такой? Из какого он диалекта SQL?
Так делать нельзя. Нельзя от слова "совсем".

Вообще, динамический sql это очень сложная и опасная штука. Реальной нужды в ней практически никогда не бывает.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38950368
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukметедом тыка выяснил, что внутри процедуры не отрабатывает присвоение переменных
например:
set @a = select aaa from xxx
set @a = (select aaa from xxx)
select @a = aaa from xxx

@a в любом случае NULL,
isql соответственно работает без ошибок.Ты на какой СУБД живешь? Если ASE, то синтаксис должен быть
select @a = aaa from xxx
И работать будет только если select aaa from xxx возвращает одну строку. Если больше - ошибка, если ни одной - @a is null.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38953696
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
Живу на ASE, динамический SQL используется для вычисления названия таблиц, они разбиты по датам.
Все же пока мой вывод подтверждается, все что создано динамически в процедуре, не внутри курсора, не выполняется.
Вот еще пример что работает через isql, но не работает через perl+odbc

create table #tmp2( sd char(10))

Select @dat_entry =
'
insert into #tmp2
select convert(char(10),isnull(min(dat),'+char(39)+char(39)+'),112)
from '+dbo.name(,@dat_beg)+'
where dat != null
and dat >= '+char(39)+convert(char(8),@dat_beg,112)+char(39)+'

Exec(@dat_entry)


select * from #tmp2
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38953699
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
White Owl,

диалект T-sql, без динамического sql как обойтись пока не представляю.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38953865
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukЖиву на ASE, динамический SQL используется для вычисления названия таблиц, они разбиты по датам.Это ты так партицирование делаешь? О Господи!
Читать тут: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20020_1251/html/databases/X15880.htm

Грубо говоря, сделай на все свои таблицы индекс по полю на основе которого ты делаешь разбиение (dat наверное). Склей все эти таблицы в один view. Делай выборки из view. Разнеси таблицы по разным devices (и желательно по разным физическим).
Оптимизатор сам сообразит что таблицы которые вне диапазона сканировать не нужно и будет работать только с теми физическими таблицами с которыми надо.
Все.
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38954470
xuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xuk
Гость
White Owl,
Ну это все хорошо, но вьюху нужно пересоздавать постоянно, т.к. таблицы заполняются и создаются новые онлайн, на оптимизатор надежды никакой, сколько раз он подводил не сосчитать.
Но основной вопрос не как обойти динамическое создание скрипта, а почему оно не работает и как это починить если вообще возможно?
...
Рейтинг: 0 / 0
ASE12-15,Windows,Perl
    #38954854
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xukWhite Owl,
Ну это все хорошо, но вьюху нужно пересоздавать постоянно, т.к. таблицы заполняются и создаются новые онлайн,И? Это разве проблема? Создаешь новый сегмент, пересоздаешь view. все просто и легко.
xukНо основной вопрос не как обойти динамическое создание скрипта, а почему оно не работает и как это починить если вообще возможно?Вынеси создание скрипта на клиента. Откажись от хранимых процедур (во всяком случае на этом участке). Формируешь все sql запросы на клиенте и посылаешь серверу простые запросы.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE12-15,Windows,Perl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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