Bom dia pessoal,
Alguém sabe como faço para fazer um select onde será testado se o campo existe na tabela, se existir ele será selecionado se não existir não fara nada.
Preciso fazer um select em uma tabela em várias bases e existe alguns campos diferentes nesta tabela em cada base.
Obrigado.
Selecionar campo se existir
-
- Rank: DBA Júnior
- Mensagens: 228
- Registrado em: Ter, 19 Jun 2007 2:12 pm
- Localização: São Paulo - SP
Boa tarde neto,
Você não pode criar views nestas base e quando o campo não existir a a visão trata null nome do campo?
Você teria uma estrutura pre definida para a view com todos os campos possíveis.
Mas se é só montar o SELECT, veja se isso ajuda alguma coisa:
Declare
v_no_tabe varchar2(100) := 'CORPORACAO';
--
Cursor C is
Select Column_name, count(1) over () as reg
From user_tab_Columns
Where table_name = v_no_tabe
Order by column_id;
c_r c%rowtype;
--
v_Contador number := 0;
--
Begin
Dbms_output.put_line('Select');
--
Open C;
Loop
fetch c into c_r;
Exit When C%notfound;
--
v_Contador := v_Contador + 1;
if v_Contador < c_r.reg then
Dbms_output.put_line(lower(c_r.Column_name)||',');
Else
Dbms_output.put_line(lower(c_r.Column_name));
End If;
--
End Loop;
Close C;
--
Dbms_output.put_line('From '||v_no_tabe);
--
Dbms_output.put_line('/');
End;
/
Você não pode criar views nestas base e quando o campo não existir a a visão trata null nome do campo?
Você teria uma estrutura pre definida para a view com todos os campos possíveis.
Mas se é só montar o SELECT, veja se isso ajuda alguma coisa:
Declare
v_no_tabe varchar2(100) := 'CORPORACAO';
--
Cursor C is
Select Column_name, count(1) over () as reg
From user_tab_Columns
Where table_name = v_no_tabe
Order by column_id;
c_r c%rowtype;
--
v_Contador number := 0;
--
Begin
Dbms_output.put_line('Select');
--
Open C;
Loop
fetch c into c_r;
Exit When C%notfound;
--
v_Contador := v_Contador + 1;
if v_Contador < c_r.reg then
Dbms_output.put_line(lower(c_r.Column_name)||',');
Else
Dbms_output.put_line(lower(c_r.Column_name));
End If;
--
End Loop;
Close C;
--
Dbms_output.put_line('From '||v_no_tabe);
--
Dbms_output.put_line('/');
End;
/
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes