Quero passar um argumento variável para um arquivo SQL externo (PL / SQL com SQL * Plus)

Eu pesquisei neste fórum e no google encontrei uma resposta para minha pergunta, mas não consigo encontrar uma resposta específica para o meu desafio. É por isso que estou pedindo aqui que espero receber uma resposta de um de vocês.

Eu quero trabalhar com vários arquivos SQL, enquanto um arquivo SQL é o arquivo de controle que executa os outros arquivos SQL com parâmetros. Esse arquivo é chamado: startup.sql

Eu tenho uma tabela com todos os meus valores (não importa os nomes das colunas, eu os mudei para minha postagem).

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)
)

Onde um dos seguintes é inserido (há mais entradas, mas uma é suficiente para mostrar a você o modo de trabalhar):

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

Meu arquivo de controle se parece com:

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;
/

No meu uitvoer.sql, tenho uma variável como esta:

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

Agora o seguinte está acontecendo. Inicio SQLAlém disso (com todas as minhas credenciais) e inicio meu arquivo de controle (control.sql). Na saída do SQLAlém disso, o seguinte é afirmado:

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

Eu estava esperando o seguinte:

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

Por que minhas variáveis no arquivo de controle não são analisadas corretamente no novo arquivo SQL?

Eu também encontrei os seguintes posts:Como você passa um argumento para um bloco PL / SQL em um arquivo sql chamado usando START no sqlplus? / Iniciar script PL / SQL a partir do arquivo em lotes (com argumentos) Parece o meu desafio, mas não estou ligando de um arquivo em lote, mas de um arquivo sql.

Espero que alguém possa me ajudar. Se algo não estiver claro, posso tentar explicar um pouco mais.

questionAnswers(1)

yourAnswerToTheQuestion