Я никогда не работал с Oracle, и я обычно использую только стандартные функциональные возможности SQL.
У меня есть общая библиотека C++, которую я скомпилировал с помощью GCC 4.2.4, и мне нужно вызвать ее функциональность из хранимой процедуры Oracle.
Можно ли использовать общую библиотеку напрямую, когда я ее создал, или мне нужно создать ее с помощью специальных тегов?
Должен ли я создавать функцию или что-то особенное в oracle, которое действительно вызывает код C++?
Как сопоставить типы? Нужно ли мне делать маршалинг?
Короче. Oracle не позволит вам получить доступ к его адресному пространству. C хранимые процедуры работают иначе, чем в MySQL и PostgreSQL. Вы должны:
CREATE LIBRARY
extproc
(или extproc32
). Этот процесс загрузит вашу общую библиотеку и поговорит с остальной частью Oracle через IPC. Лучшим местом для запуска является установка сервера Oracle, содержащая образцы C OCI. Там вы найдете скелет такой общей библиотеки, а также Makefile
который ее скомпилирует.
Кажется, вам нужно использовать внешние процедуры Oracle.