Документация.
Передача имен объектов схемы в качестве параметров
Предположим, вам нужна процедура, которая
принимает имя любой базы данных
стол, а затем удаляет этот стол из вашего
схемы. Вы должны построить строку с
заявление, которое включает в себя объект
имена, затем используйте EXECUTE IMMEDIATE для
выполнить инструкцию:
CREATE TABLE employees_temp AS SELECT last_name FROM employees;
CREATE PROCEDURE drop_table (table_name IN VARCHAR2) AS
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || table_name;
END;
/
Используйте конкатенацию для построения строки,
вместо того, чтобы пытаться пройти стол
имя в качестве переменной связывания через
УСЛОВИЯ ИСПОЛЬЗОВАНИЯ.
Кроме того, если вам нужно позвонить
процедура, имя которой неизвестно до
время выполнения, вы можете передать параметр
определение процедуры. За
Например, следующая процедура может
вызвать другую процедуру (drop_table)
указание имени процедуры при
казнены.
CREATE PROCEDURE run_proc (proc_name IN VARCHAR2, table_name IN VARCHAR2) ASBEGIN
EXECUTE IMMEDIATE 'CALL "' || proc_name || '" ( :proc_name )' using table_name;
END;
/
Если вы хотите сбросить стол с
Процедура drop_table, вы можете запустить
Процедура выглядит следующим образом. Обратите внимание, что
имя процедуры пишется с заглавной буквы.
CREATE TABLE employees_temp AS SELECT last_name FROM employees;
BEGIN
run_proc('DROP_TABLE', 'employees_temp');
END;
/