Я хочу передать переменный аргумент во внешний файл SQL (PL / SQL с SQL * Plus)

У меня есть поиск в этом форуме и через Google для ответа на мой вопрос, но я не могу найти конкретный ответ на мой вопрос. Вот почему я прошу здесь, чтобы надеяться получить ответ от одного из вас, ребята.

Я хочу работать с несколькими файлами SQL, тогда как один файл SQL является управляющим файлом, который выполняет другие файлы SQL с параметрами. Этот файл называется: startup.sql

У меня есть таблица со всеми моими значениями (не обращайте внимания на названия столбцов, я изменил их для своего поста).

create table control (
  S varchar2(15) not null,
  N varchar2(25 char) not null, 
  B varchar2(25 char) not null, 
  Acheck varchar2(25 char) not null, 
  Adcheck varchar2(25) not null, 
  Blu varchar2(25) not null,
  ADB varchar2(25)
)

Там, где вставлено одно из следующего (есть больше записей, но одного достаточно, чтобы показать вам способ работы):

    insert into control (S,N,B,Acheck,Adcheck,Blu,ADB)
       values('Test','B','J','J','N','N', '');

Мой контрольный файл выглядит так:

set escape on
set serveroutput on
SET DEFINE ON

declare
  cursor c_lees_control is
    select S, N, B, Acheck, Adcheck, Blu, ADB
  from control

  v_s           varchar2(30);
  v_b           varchar2(30);
  v_blu     varchar2(30);

begin

  for r_lees_control in c_lees_control
  loop
    v_s := r_lees_control.S;
    v_b := r_lees_control.B;
    v_blu := r_lees_control.Blu;

    if v_b = 'J' then
      --Also tried this.
      --@C:/Temp/uitvoer.sql $v_s $v_blu
      @C:/Temp/uitvoer.sql %v_s% %v_blu%
end if;
  end loop;
end;
/

В моем uitvoer.sql у меня есть такая переменная:

    variable_s := '&&1';
    variable_blu := '&&2';

Сейчас происходит следующее. Я запускаю SQLПлюс (со всеми моими учетными данными), и я запускаю свой контрольный файл (control.sql). В выводе SQLПлюс следующее заявлено:

old 89:        s = '&&1';
new 89:        s = '%v_s%';
old 128:       b_lu := '&&2';
new 128:       b_lu := '%v_blu%';

Я ожидал следующего:

old 89:        s = '&&1';
new 89:        s = 'Test';
old 128:       b_lu := '&&2';
new 128:       b_lu := 'J';

Почему мои переменные в контрольном файле неправильно анализируются в новом файле SQL?

Я также нашел следующие сообщения:Как передать аргумент в блок PL / SQL в файле sql, который называется START в sqlplus? / Запустить скрипт PL / SQL из командного файла (с аргументами) Это похоже на мой вызов, но я звоню не из пакетного файла, а из файла SQL.

Я надеюсь, что кто-то может мне помочь. Если что-то неясно, я могу попытаться объяснить это немного подробнее.

Ответы на вопрос(1)

Ваш ответ на вопрос