Pular para o conteúdo

Fóruns SQL e PL/SQL Usar condição para definir qual select vai executa Usar condição para definir qual select vai executa

#109373
Avatar photoJosé Laurindo Chiappa
Moderador

    Não, colega tá completamente errado : primeiro, o CASE ** não ** pode ser usado fora de um SQL, solto no meio do bloco PL/SQL como vc propôe : pra vc fazer isso num bloco PL/SQL vc usa o IF…
    O outro ponto errado é que a partir do momento em que vc encapsulou um SELECT dentro de um bloc BEGIN/END, vc passa a programar EM PL/SQL, e na linguagem PL/SQL vc TEM que indicar em quais variáveis Pl/SQL e/ou em qual tabela onde os valores lidos na query vão ser guardados – vc RIGOROSAMENTE ** Não Pode ** ter um SELECT * FROM tabela e nada mais, vc TEM que fazer SELECT * INTO variáveis OU colocar a query dentro de um cursor…

    ==> A correção seria algo mais ou menos tipo :

    declare
    n number :=1;
    begin
    if n=1 then
    for r in (select * From tabela1
    Where tabela1.emissao = '31-jul-2018'
    AND tabela1.empresa =1
    )
    loop
    ... faço algo - exibo, guardo em variaveis ou em tabela os dados recuperados pelos cursor ...
    end loop;
    else
    for r in (select * From tabela2
    Where tabela2.emissao = '31-jul-2018'
    AND tabela2.empresa =2
    )
    loop
    ... faço algo - exibo, guardo em variaveis ou em tabela os dados recuperados pelos cursor ...
    end loop;
    end;

    []s

    Chiappa