Я очень предпочитаю использовать вставки этого «встроенного» стиля в блоке pl / sql (в отличие от динамического sql в стиле немедленного исполнения - где вы должны разделять кавычки и т.д.)
-- a contrived example
PROCEDURE CreateReport( customer IN VARCHAR2, reportdate IN DATE )
BEGIN
-- drop table, create table with explicit column list
CreateReportTableForCustomer;
INSERT INTO TEMP_TABLE
VALUES ( customer, reportdate );
END;
/
Проблема здесь в том, что оракул проверяет, существует ли 'temp_table' и имеет ли оно правильное количество столбцов, и выдает ошибку компиляции, если он не существует.
Так что мне было интересно, есть ли способ обойти это ?! По сути, я хочу использовать заполнитель для имени таблицы, чтобы обмануть оракула, чтобы он не проверял, существует ли таблица.
EDIT:
Я должен был упомянуть, что пользователь может выполнить любой «отчет» (как указано выше). Механизм, который будет выполнять произвольный запрос, но всегда записывать в temp_table (в схеме пользователя). Таким образом, каждый раз, когда запускается протокол proc, он удаляет temp_table и воссоздает его, скорее всего, с другим списком столбцов.