Как мне выполнить скрипт SQL, используя переменную связывания - PullRequest
0 голосов
/ 21 января 2020

Я бегу Oracle 18. c на платформе Windows 10. У меня есть большой сценарий DOS, который вызывает SQL Plus для запуска первого SQL сценария, передавая ему параметр. Параметр успешно передан в первый SQL скрипт. В этом скрипте SQL я пытаюсь добавить текст к переданному параметру, чтобы он мог вызвать второй скрипт, используя функцию "@". DOS Script test1.bat

@echo off    
SET value1=2020_01_19_17_00_01    
sqlplus my_username/my_password@my_TNS as sysdba @C:\Backups\test1.sql %value1%

SQL Script test1. sql

SET SERVEROUTPUT ON
variable param1 varchar2(512);
variable full_file_name varchar2(512);
BEGIN
    :param1 := '&&1';
    dbms_output.put_line('The value of the passed parameter is: ' || :param1);   
    :full_file_name := :param1 || '_f104.sql';
    dbms_output.put_line('The new filename would be: ' || :full_file_name);
    @:full_file_name;
END;
/

У меня проблемы с получением значение в : full_file_name для выполнения из сценария test1. sql. Если бы переменная не использовалась, я бы просто использовал строку @2020_01_19_17_00_01_f104.sql Как мне go получить файл сценария, имя которого хранится в: full_file_name для выполнения?

1 Ответ

0 голосов
/ 21 января 2020

Я нашел способ сделать это. Мой скрипт sql теперь выглядит следующим образом:

Define ffn104 = '&&1._f104.sql'
@&ffn104
exit

Обратите внимание, что в операторе Define я должен был поставить точку после переданной переменной && 1, чтобы завершить ее определение. Затем я добавил _f104. sql. Это решило проблему.

...