Передача и использование параметра в скрипте в SQL Developer - PullRequest
0 голосов
/ 03 мая 2019

В SQL Developer я хочу вызвать такой скрипт:

@"path\to\script.sql" develop

и использовать значение develop в своем скрипте в качестве префикса таблицы следующим образом:

SELECT * FROM <parameter>_table;, который затем должен быть равен SELECT * FROM develop_table

Возможно ли что-то подобное в SQL Developer?

1 Ответ

1 голос
/ 04 мая 2019

См. Статью ниже.Он ответит на ваш вопрос.

https://blogs.oracle.com/opal/sqlplus-101-substitution-variables#2_7

Я приведу для вас пример на основе этой статьи в блоге.

Создание фиктивной таблицы:

CREATE TABLE t(x NUMBER, t VARCHAR2(255));
INSERT INTO t(x, t) VALUES (1, 'Example');
COMMIT;

Сценарий ниже был сохранен в C: \ Users \ William .Имя файла: example.sql .

SELECT *
  FROM &1
;

Теперь из SQL Developer я выполняю:

@C:\Users\William\example.sql t

Обратите внимание, что когда выпередавая параметр в скрипт, как это, вы передаете текстовое значение, которое хранится в переменных с неявным именем подстановки.Переменная подстановки именуется в соответствии с ее порядком (например, & 1, затем & 2, затем & 3 и т. Д.).

Это вывод сценария:

old:SELECT *
  FROM &1

new:SELECT *
  FROM t

 X T         
-- ----------
 1 Example   

Возможно, вам потребуется некоторое время, чтобы рассмотретьдругие решения проблемы, которую вы решаете.Вам может не потребоваться выполнить скрипт через разработчика SQL.Возможно, вам лучше создать процедуру, которая генерирует динамический SQL на основе параметров, которые вы передаете в процедуру.Затем вы могли бы использовать EXECUTE IMMEDIATE в динамическом операторе SQL внутри процедуры.

Лично я мог бы найти этот метод более полезным при выполнении таких действий, как ETL (в отличие от запросов).Опять же, я не эксперт, и, возможно, есть даже лучшие решения.

...