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
  

Mensagemem Ter, 21 Jun 2005 11:39 am

Pessoal bom dia

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

and id_produto < 9999

Onde me traz somente produtos com 04 casas.

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

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,
Trevisolli
Localização: Araraquara - SP

Mensagemem Ter, 21 Jun 2005 11:52 am

Acompanhe o raciocínio e veja onde buscar essa informação:
Código: Selecionar todos
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
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Qua, 22 Jun 2005 9:30 am

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
Trevisolli
Localização: Araraquara - SP

Mensagemem Qua, 22 Jun 2005 11:51 am

Porque não faz o seguinte:

Código: Selecionar todos
POWER(10, DATA_PRECISION-DATA_SCALE ) - 1
dr_gori
Localização: Portland, OR USA

Thomas F. G

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


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


    Voltar para PL/SQL

    Quem está online

    Usuários navegando neste fórum: Google [Bot] e 8 visitantes