Tamanho Variável :: Help Urgente

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
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP

Pessoal bom dia

TEnho um select que faço a seguinte verificação:

Selecionar tudo

 and id_produto < 9999
Onde me traz somente produtos com 04 casas.

Gostaria de saber como faço para que compare tipo:

Selecionar tudo

 and id_produto < tabela.id_produto%type
ou seja, consiga saber o tamanho do campo na tabela e faça esta comparação dinâmica.

Teria como?

Grato,
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acompanhe o raciocínio e veja onde buscar essa informação:

Selecionar tudo

SQL> DESC EMP
 Name                            Null?    Type
 ------------------------------- -------- ----
 EMPNO                           NOT NULL NUMBER(4)
 ENAME                                    VARCHAR2(10)
 JOB                                      VARCHAR2(9)
 MGR                                      NUMBER(4)
 HIREDATE                                 DATE
 SAL                                      NUMBER(7,2)   ===> ESSA que eu quero!
 COMM                                     NUMBER(7,2)
 DEPTNO                                   NUMBER(2)

SQL> 
SQL> select DATA_PRECISION - DATA_SCALE CASAS_DECIMAIS_DA_COLUNA_SAL
  2  from user_tab_columns
  3  where table_name  ='EMP'
  4    AND COLUMN_NAME ='SAL'
  5  /

CASAS_DECIMAIS_DA_COLUNA_SAL
----------------------------
                           5

1 row selected.

SQL> 
SQL> select 
  2    DATA_PRECISION-DATA_SCALE             CASAS_DECIMAIS_DA_COLUNA_SAL
  3  , POWER(10, DATA_PRECISION-DATA_SCALE ) VALOR_MAXIMO
  4  from user_tab_columns
  5  where table_name  ='EMP'
  6    AND COLUMN_NAME ='SAL'
  7  
SQL> /

CASAS_DECIMAIS_DA_COLUNA_SAL VALOR_MAXIMO
---------------------------- ------------
                           5       100000

1 row selected.
Em resumo, você pega o valor máximo da coluna no dicionário de dados atravez dessas tabelas acima!!! Agora, é só adaptar isso ao seu contexto!

:-o
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP

Primeiramente, muito obrigado pela resposta.
O site é de primeira!

Só tenho mais uma dúvida:

A quantidade do meu DATA_PRECISION é de 04.
Gostaria de pegar este valor e, replicar o número 9, quatro vezes... conforme a data_precision.

Teria como fazer isso? Não sei se existe REPLACE ou REPLICATE no Oracle.

Muito obrigado.

Abraço,

Trevisolli
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Porque não faz o seguinte:

Selecionar tudo

POWER(10, DATA_PRECISION-DATA_SCALE ) - 1
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes