Apelidos nos campos

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

Bom dia,
Utilizo essa SQL para recuperar todos os campos de uma determinada tabela, mas gostaria de criar "apelidos" para esses campos
Ex. CodCliente -> Código do Cliente

Selecionar tudo

SELECT COLUNAS.COLUMN_NAME AS COLUNA,  
    COLUNAS.DATA_TYPE AS TIPO,  
    DECODE(COLUNAS.DATA_PRECISION, NULL, COLUNAS.CHAR_COL_DECL_LENGTH, COLUNAS.DATA_PRECISION)  AS TAMANHO,  
    COLUNAS.NULLABLE AS é_NULO
FROM   
    USER_TABLES TABELA,  
    USER_TAB_COLUMNS COLUNAS  
WHERE   
    -- JOINS   
    TABELA.TABLE_NAME = COLUNAS.TABLE_NAME  
    AND TABELA.TABLE_NAME = 'CONTRATOS'
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

select 'CodCliente' as "Código do Cliente" from dual;
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Cara pra tu criar apelidos pro retorno de COLUNAS.COLUMN_NAME vai ter que fazer algum trabalho em sql em cima disso.

Não vejo como fugires de um DECODE ou de um CASE pra especificar o que queres que venha no local.

Se só quer dar apelido pra coluna da tua query a resposta do vitor te atende.
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

Obrigado victorhugomuniz, mas gostaria de algo mais "automatico" e fácil, essa tabela possui 7 campos, então imagine "criar" 7x esse Select pra traduzir esses campos.

SergioLBJr, você teria algum exemplo pratico?
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Não precisa criar 7x o select basta colocar em todas as colunas do primeiro select, o que o Vitor citou foi um exemplo em um select de uma coluna...

Selecionar tudo

Select colunas.column_name As "codigo do cliente",
       colunas.data_type As "nome do cliente",
       decode(colunas.data_precision, Null, colunas.char_col_decl_length, colunas.data_precision) As "tamanho do campo 1",
       colunas.nullable As "assim por diante"
  From user_tables      tabela,
       user_tab_columns colunas
 Where
-- JOINS   
 tabela.table_name = colunas.table_name
 And tabela.table_name = 'CONTRATOS'
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

Acho que não estão entendendo o que eu quero, vou tentar explicar melhor

Imagem no PL/SQL
Imagem
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Como eu disse, não vejo como fugir disso.

Selecionar tudo

SELECT DECODE(dummy, 'X', 'ESTE É O NOME QUE EU QUERO QUE APAREÇA NA MINHA COLUNA', 'MEXERAM NA MINHA TABELA DUAL') FROM dual
Cara ou tu faz um mega decode ou encontra um padrão nos teus nomes que tu possa aplicar de maneira mais resumida.
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Desculpe, não consigo visualizar imagens aqui da empresa, poderia descrever?
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Isso não está fazendo sentido nenhum para mim.

Você poderia descrever o que pediram para você fazer em alto nível, na necessidade de negócio, em vez de perguntar como implementar a solução da forma que você está pensando.

Descreva o problema, não a solução que você pensou para ele.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Talvez você queira incluir comentários para as colunas e depois fazer um join com a "user_col_comments".

De repente ajude...
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

vou fazer um teste, e retorno o resultado
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

É isso que eu quero, porém está retornando errado

Selecionar tudo

SELECT COLUNAS.COLUMN_NAME AS COLUNA,
       NOME_CAMPO.COMMENTS AS NOME,
       COLUNAS.DATA_TYPE AS TIPO,
       DECODE(COLUNAS.DATA_PRECISION,
              NULL,
              COLUNAS.CHAR_COL_DECL_LENGTH,
              COLUNAS.DATA_PRECISION) AS TAMANHO,
       COLUNAS.NULLABLE AS é_NULO
  FROM USER_TABLES TABELA 
  LEFT JOIN USER_TAB_COLUMNS COLUNAS ON (TABELA.TABLE_NAME = COLUNAS.TABLE_NAME)
  LEFT JOIN USER_COL_COMMENTS NOME_CAMPO ON (COLUNAS.TABLE_NAME = NOME_CAMPO.TABLE_NAME)
  WHERE TABELA.TABLE_NAME = 'CONTRATOS'
Imagem

Tentei fazer INNER JOIN, LEFT JOIN, RIGHT JOIN e nenhum deles trouxe corretamente os dados
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Poderia postar o que está retornando, e o que você gostaria que retornasse em vez disso?
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

Gostaria que cada campo retornasse seu devido comentário

Selecionar tudo

Campo           Comentário
Filial                    Loja
CodigoContrato  Código do Contrato
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

Consegui da seguinte forma

Selecionar tudo

SELECT DISTINCT(COLUNAS.COLUMN_NAME) AS COLUNA,
       NOME_CAMPO.COMMENTS AS NOME
  FROM USER_TABLES TABELA, USER_TAB_COLUMNS COLUNAS, USER_COL_COMMENTS NOME_CAMPO
  WHERE TABELA.TABLE_NAME = 'CONTRATOS'
    AND TABELA.TABLE_NAME = COLUNAS.TABLE_NAME
    AND (COLUNAS.COLUMN_NAME = NOME_CAMPO.COLUMN_NAME 
    AND NOME_CAMPO.TABLE_NAME = TABELA.TABLE_NAME)
Tirei alguns campos que não eram necessários.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante