Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase / 7 сообщений из 7, страница 1 из 1
19.01.2004, 12:24
    #32380058
sibircev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase
Проблема заключается в следующем:
Допустим нужно вызвать из триггера или процедуры внешний скрипт (DLL), то есть программу никакого отношения к Sybase не имеющую. Как это сделать?
...
Рейтинг: 0 / 0
19.01.2004, 13:37
    #32380201
Andyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase
Не совсем понятно. Если нужно вызвать именно программу , то надо использовать системную процедуру xp_cmdshell .

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Example:

The following statement lists the files in the current directory in the file c:\temp.txt

xp_cmdshell('dir > c:\\temp.txt')

The following statement carries out the same operation, but does so without displaying a command window.

xp_cmdshell('dir > c:\\temp.txt', 'no_output' )


Если нужна функция, описанная в какой-либо DLL, то надо создать процедуру для вызова внешней функции. Подробнее в главе "Creating procedures and functions with external calls".
...
Рейтинг: 0 / 0
19.01.2004, 15:27
    #32380504
sibircev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase
За системную процедуру спасибо. Попробую.
У меня версия Sybase 11.5 стоит на Windows 2000.
По вызову внешних процедур вопрос:
1. Имя процедуры в DLL должно совподать или нет с именем объявленной процедуры в Sybase. Если нет, то как узнать какую процедуру из DLL вызывать.
2. Появляется ошибка при попытки запуска внешний процедуры:
Server Message: Number 11018, Severity 16
Procedure 'TestDLL', Line 1:
XP Server must be up for ESP to execute.
(return status = -6)
Как я понял нужно поднять сервис XP Server. Он установлен по умолчанию с Sybase или нет?
...
Рейтинг: 0 / 0
20.01.2004, 08:50
    #32381140
Andyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase
Как говорит наш модератор - указывайте версию и название базы. :)

Я ответил касательно ASA, с ASE работаю гораздо меньше и, соответственно, знаю меньше. Спрошу у своих администраторов.
...
Рейтинг: 0 / 0
20.01.2004, 10:05
    #32381231
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase
sibircev
DLL из xp_cmdcshell не вызовешь, так как она вызывает командный процессор ОС. Для подключения DLL читайте в BOL главы, посвященные Extended Stored Procedure . Сразу хочу сказать, что любую DLL подцепить нельзя - она должна совпадать с принятыми форматами вызовов и передачи параметров СУБД.

P.S. А зачем Вам это понадобилось ? Может быть задачу можно решить без таких решений ?
...
Рейтинг: 0 / 0
11.02.2004, 11:28
    #32405250
AndreiVG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase
Пишешь dll-ку
потом из ASA, например в функции, делаешь таким образом:
returns тип external name 'название_функции@название_dll.dll'

Насколько я помню, делал так и работало
...
Рейтинг: 0 / 0
12.02.2004, 10:59
    #32406746
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase
Привожу конкретный пример.
использование функции GetComputerName из kernel32.dll

1.обьявляем внешную процедуру

Сreate procedure getComputername(inout ComputerName char(32), inout BuuferLength integer) external name 'WindowsNT:GetComputerName@kernel32'

2. Как использовать
create procedure procTemp()
begin
declare skey char(255);
declare ikey integer;
set skey=space(254);
set ikey=254;
call getComputerName(skey,ikey);
set skey =trim(skey);
set ikey=legth(skey);
select skey,ikey
end
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как вызвать внешний скрипт (DLL) из триггера или процедуры Sybase / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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