Как вызвать функцию C из PL / SQL

У меня есть скомпилированная программа на C, которая включает в себя несколько функций. Я хотел бы вызывать функции в этой программе на C из PL / SQL. Вот что я сделал:

Загрузить скомпилированную программу C как библиотеку Oracle (скомпилированная программа на C скопирована в $ ORACLE_HOME / bin /:

create or replace library startoo_lib
    as '/apps/oracle/product/19.3/dbhome_1/bin/ooffice.so';

Создайте функцию, вызывающую библиотеку / программу C, функция в программе C определена как bool oo_startup(string strHost, int port, bool bVisible)

create or replace FUNCTION oo_startup(oo_host in varchar2, ooport in number)
return BOOLEAN
as external
library startoo_lib
name "oo_startup"
language c;

Вызов функции из sqlplus:

SQL> select oo_startup(shemp,8110) from dual;
select oo_startup(shemp,8110) from dual
                  *
ERROR at line 1:
ORA-00904: "SHEMP": invalid identifier


SQL> select oo_startup('shemp',8110) from dual;
select oo_startup('shemp',8110) from dual
       *
ERROR at line 1:
ORA-00902: invalid datatype

Я не уверен, что делаю неправильно, и я новичок в PL / SQL. Любые подсказки будут оценены.

Элемент списка выбора не может возвращать логический тип данных. Однако вы можете использовать их в блоках PL / SQL. Сделайте так, чтобы ваша функция возвращала varchar2, и все должно быть в порядке. Что-нибудь вроде «Y» или «N» поможет.

Jeff Holt 02.04.2021 06:22

Вы, безусловно, можете пойти по пути внешней библиотеки. Предполагая, что вы имеете дело с последней версией Oracle, я думаю, что большинство людей попытаются использовать способность пакета dbms_scheduler запускать внешние исполняемые файлы oracle-base.com/articles/10g/scheduler-10g, а не использовать внешнюю библиотеку, если это возможно. Конечно, может быть причина, по которой вы действительно хотите, чтобы это была внешняя библиотека, но если вы не смотрели исполняемые задания, это, вероятно, более простой подход.

Justin Cave 02.04.2021 09:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
32
0

Другие вопросы по теме