Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как подключить внешнюю DLL ? / 6 сообщений из 6, страница 1 из 1
27.08.2005, 14:55
    #33237360
s_elected
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить внешнюю DLL ?
Народ, у меня вопрос...

Как мне из постгри из хранимой процедуры вызвать функцию или процедуру из внешней DLL?
Допустим я написад DLL на Delphi в ней есть функция MyFunc которая что-то возвращает как ее вызвать ?

Креативу нет предела ;-)
...
Рейтинг: 0 / 0
28.08.2005, 12:18
    #33237694
s_elected
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить внешнюю DLL ?
Вот нашел решение
http://www.postgresql.org/docs/8.0/interactive/xfunc-c.html
но DLL созданное в Delphi не работает =-(((
Не пойму в чем разница между DLL из C++ и DLL Delphi
Креативу нет предела ;-)
...
Рейтинг: 0 / 0
29.08.2005, 09:31
    #33238052
roottim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить внешнюю DLL ?
MyFunc; cdecl ; имеется ?
...
Рейтинг: 0 / 0
29.08.2005, 15:50
    #33239251
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить внешнюю DLL ?
s_elected...Как мне из постгри из хранимой процедуры вызвать функцию или процедуру из внешней DLL?....

есть такая фигня как pgAdmin
коннектимся к базе данных. На физический носитель БД записываем свою внешнюю.

В админе лезем...
Базы-<Имя>-схемы-<имя>-функции.
В правом поп-ап говорим
Новая функция...
В открышемся диаложке, на первой закладке вводим...
Имя в базе (по какому будем делать тук-тук к ней)
владельца...
тип возврата (вот тут тип должен ОБЯЗАТЕЛЬНО совпадать с возвращаемым значением. Как лакмусовая бамажка - при выходе из функции если наблюдаеться падёж с криком - ну туда полез кернел постгресса и сработала защита....
Язык - выбираете Си. (для делфи не скажу - возможно так же, но думаю достаточно чтоб совпадала правило очистки стэка)

Переходите в закладку Параметры...
напротив добавить выбираете ТИП параметра (от данного типа зависит КАК должны ВЫ обрабатывать данные в своём коде при вызове функции. кстати Вы можете и не делать этого). войд так же мона выбрать.
Чуть ниже задаёте имя (вроде бы пофигу какое, лишь бы уникально).
дальше жмахаете добавить и повторяете сие действа для каждой переменной.
Ышо ниже - тут задаёте путя к вашей дэлеле. (если оставите бакс-либдир, то это означает что Ваша дэлеле будет искаться по пути описываемой данной переменной. по умолчанию в подкоталоге lib\ постгрессовского раздела).
дальше Вы должны указать имя ЭКСПОРТА из своей дэлеле. Т.е. буковка в буковку оно должно совпадать с обьявлением из самой дэлеле.

Жмахаете окей.
Если всё прокатило...
Это значит, что постгресс нашёл, загрузил, обнаружил функцию и записал.
Если нет - то лечиться это проверкой всех имён. Экспортируемых и ожидаемых.
Далее вызов. Тут если Вам передалось управление - ура, ура Вы можете дёргать постгресс за сиськи.
Если Вам удалось ышо и вернуть управление без проблем (а ышо круче с параметрами) - ну тут Вы дальше сами с усами :)


с уважением
(круглый)
...
Рейтинг: 0 / 0
01.09.2005, 13:08
    #33245797
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить внешнюю DLL ?
kolobok0.....Далее вызов. Тут если Вам передалось управление - ура, ура Вы можете дёргать постгресс за сиськи....

Немного добавлю. Только, что влетел в ситуацию, когда регистриться - регистриться а запускать не хочет. Ну млин... Схемы две... Потом дошло. Указал имя схемы через точку - запустился... Но не катит так. В конфиг путя прописал по умолчанию... Не хочет. Указал явно в базе параметр search_path - задышало...


удачи Вам
(круглый)
...
Рейтинг: 0 / 0
08.09.2005, 05:15
    #33257610
s_elected
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить внешнюю DLL ?
Все сделал работает
а фукцию к DLL под WIN вязать нужно так

Код: plaintext
1.
2.
3.
СREATE OR REPLACE FUNCTION base.encryptpart(int4, int4, int4, int4, int4, int4, int4, int4, int4)
  RETURNS int4 AS
'D:\\PGCryptDLL.dll', 'EncryptPart'
  LANGUAGE 'c' STABLE STRICT;

Вот так то ! ;-)

Креативу нет предела ;-)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как подключить внешнюю DLL ? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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