VARIAVEL NO FROM DA TABELA

SQL

Oracle

SELECT

Oracle PL SQL

Variáveis

21/05/2019

Boa tarde Pessoal !!
estou com um problema que tenho 5 tabelas praticamente idênticas, não posso unir em um tabelão pois vai ficar dificil a manutenção para o usuário
preciso buscar um valor destas tabelas mas antes definir de que tabela buscar
Gostaria de fazer um SELECT usando uma variável no FROM, exemplo:

Field_tabela := TABELA01;
SELECT * FROM Field_tabela;

é possível fazer isso de alguma maneira , aguardo uma resposta meus amigos e agradeço desde já
Luiz Zacchi

Luiz Zacchi

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

22/05/2019

Eu não conheço a sintaxe ORACLE, mas deve ser algo assim:
EXECUTE IMMEDIATE 'SELECT TUBO6 FROM ' + TABELA + ' WHERE STRING = ''QTX(I)/2'' '
Porque você precisa concatenar a variável 'tabela', e não abrir a tabela 'tabela'.
GOSTEI 1

Mais Respostas

Emerson Nascimento

Emerson Nascimento

21/05/2019

pesquisa por EXECUTE IMMEDIATE.

Aqui mesmo no Devmedia você encontra dicas sobre esse assunto:
https://www.devmedia.com.br/sql-dinamico-no-oracle-parte-1/6062
GOSTEI 0
Luiz Zacchi

Luiz Zacchi

21/05/2019

pesquisa por EXECUTE IMMEDIATE.

Aqui mesmo no Devmedia você encontra dicas sobre esse assunto:
https://www.devmedia.com.br/sql-dinamico-no-oracle-parte-1/6062


OBRIGADO PELA AJUDA

SELECT VAOFILACENTRAL INTO FIELD_VAOFILACENTRAL FROM AD_PARAMSEGUIDOR WHERE TIPO = FIELD_MATERIA_SEG AND ISOPLETA = FIELD_ISOPLETA;


IF FIELD_VAOFILACENTRAL =7 THEN
TABELA:= 'AD_TOVPS7';
ELSIF FIELD_VAOFILACENTRAL =6 THEN
TABELA:= 'AD_TOVPS6';
ELSIF FIELD_VAOFILACENTRAL =5 THEN
TABELA:= 'AD_TOVPS5';
ELSIF FIELD_VAOFILACENTRAL =4 THEN
TABELA:= 'AD_TOVPS4';
ELSIF FIELD_VAOFILACENTRAL =3 THEN
TABELA:= 'AD_TOVPS3';
ELSIF FIELD_VAOFILACENTRAL =2 THEN
TABELA := 'AD_TOVPS2';
END IF;

EXECUTE IMMEDIATE 'SELECT TUBO6 FROM TABELA WHERE STRING = QTX(I)/2'
INTO TUBO2(I)
USING TABELA;


TENTEI USAR ESTE COMANDO NESTA SINTAXE, POREM NAO FUNCIONOU
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

21/05/2019

Eu não conheço a sintaxe ORACLE, mas deve ser algo assim:
EXECUTE IMMEDIATE 'SELECT TUBO6 FROM' + TABELA + 'WHERE STRING = ''QTX(I)/2'''
Porque você precisa concatenar a variável 'tabela', e não abrir a tabela 'tabela'.
GOSTEI 0
Luiz Zacchi

Luiz Zacchi

21/05/2019

Eu não conheço a sintaxe ORACLE, mas deve ser algo assim:
EXECUTE IMMEDIATE 'SELECT TUBO6 FROM ' + TABELA + ' WHERE STRING = ''QTX(I)/2'' '
Porque você precisa concatenar a variável 'tabela', e não abrir a tabela 'tabela'.

ok!
vou tentar obrigado !!
GOSTEI 0
POSTAR