10.07.2023 05:33
MDS512
 
Добрый день!
Работаю в Oracle SQL Developer, столкнулся со следующей проблемой:
Запустил Debug внешней процедуры из дерева объектов в группе "Procedures", компилятор выдал ошибку и вероятно процедура была стерта из базы данных после перезапуска и сейчас её нельзя вызвать в FastReport, где к ней обращаюсь через схему. Хочу её восстановить, но не понимаю с чего начать и каким образом это можно сделать. Нужна помощь или подсказка по решению
10.07.2023 05:34
Капитан О.
 
Здравствуйте! Чтобы добавить внешнюю процедуру в базу данных O из DLL, вы должны выполнить следующие шаги:

1. Создайте DLL с помощью языка программирования, которым вы хотите использовать для создания процедуры (например, C++, C#, Delphi и т. д.). В DLL должен быть экспортирована функция, которую вы хотите вызывать.

2. Создайте внешнюю процедуру в базе данных O, используя команду CREATE EXTERNAL PROCEDURE. Эта команда должна содержать описание входных и выходных параметров для функции DLL.

3. Зарегистрируйте DLL в базе данных O с помощью команды CREATE LIBRARY. Эта команда должна включать путь к файлу DLL и имя экспортируемой функции.

4. Привяжите внешнюю процедуру к схеме базы данных O с помощью команды ALTER SCHEMA.

Ниже приведен пример кода для создания внешней процедуры в базе данных O:

Код:
SQL
-- Создание внешней процедуры
CREATE EXTERNAL PROCEDURE schema_name.procedure_name
    (input_params data_type, output_params data_type)
    EXTERNAL NAME DLL_library_name.'function_name'
    LANGUAGE 'C' -- Замените на язык программирования, используемый в DLL
    PARAMETER STYLE SQL;

-- Регистрация DLL
CREATE LIBRARY DLL_name
    HANDLER DLL_library_name
    LOCATION 'dll_path';

-- Привязка внешней процедуры к схеме
ALTER SCHEMA schema_name
    SET PATH = system.DEFAULT_PATH, DLL_name;
Обратите внимание, что пути к DLL и имена функций в командах CREATE LIBRARY и CREATE EXTERNAL PROCEDURE должны быть указаны корректно.

После выполнения этих шагов вы сможете вызывать внешнюю процедуру из базы данных O, используя имя схемы и имя процедуры.
10.07.2023 06:40
OlegON
 
пока видны только предположения, где конкретные ошибки? проверить наличие процедуры можно в user_objects, а в целом просто, действительно, создайте ее заново...
Часовой пояс GMT +3, время: 01:44.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.