Walquencir

Acho que o motivo do erro é outro.
Provavelmente, nesse campo da tabela, há outros caracteres que não foram
considerados pelo TRANSLATE que o Márcio sugeriu. Por isso ocorre o erro de
conversão para number.

[ ]

André


Em 15/07/08, Walquencir Pedroti <[EMAIL PROTECTED]> escreveu:
>
>   Grande Marcio!!
>
> Obrigado pela ajuda, mas este é o problema.
>
> Veja como ficou a tabela VIEW após a execução do SQL:
>
> CNPJ NUMBER à falta o valor
>
> NOME VARCHAR2(40)
>
> ENDERECO VARCHAR2(60)
>
> Quando deveria ficar destra forma:
>
> CNPJ NUMBER(15,0)
>
> NOME VARCHAR2(40)
>
> ENDERECO VARCHAR2(60)
>
> Por não ter o numero na frente em pesquisas diretas tipo select * from
> tabela where cnpj =11111111 retorna erro
>
> Obrigado
>
> Walquencir Pedroti
>
> De: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br> [mailto:
> oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>] Em nome de
> Marcio Portes
> Enviada em: terça-feira, 15 de julho de 2008 00:58
> Para: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>
> Assunto: Re: [oracle_br] Alterar campo varchar2 para number na VIEW
>
> Walquencir,
>
> Tenta ai:
>
> CREATE OR REPLACE FORCE VIEW
> "SAC"."CLIENTE" ("CNPJ", "NOME", "ENDERECO") AS
> SELECT to_number(replace(translate(L_CLI.CGC,'/-.',' '),' ','')) cnpj
> , L_CLI.NOME NOME
> , L_CLI.END ENDERECO,
> FROM L.CLIENTE L_CLI
> , L.REPRESENTANTE L_REP
> , L.SUPERVISOR L_SUP
> WHERE L_CLI.CODREP = L_REP.CODIGO
> AND L_REP.SUPERVISOR = L_SUP.CODIGO
> /
>
> 2008/7/14 Walquencir Pedroti <[EMAIL 
> PROTECTED]<walquencir.pedroti%40dovac.com.br><mailto:
> walquencir.pedroti%40dovac.com.br <walquencir.pedroti%2540dovac.com.br>>
> >:
>
> > Boa tarde a todos.
> >
> > Minha tabela o campo CNPJ é VARCHAR2.
> > Quando monto minha view da forma abaixo. E a tabela view não reconhece
> como
> > Number o campo CNPJ,
> > e portanto toda a consulta feita neste campo retorna como null, já um
> > select all retorna o CNPJ.
> >
> > CREATE OR REPLACE FORCE VIEW "SAC"."CLIENTE" ("CNPJ", "NOME", "ENDERECO")
> > AS
> > SELECT TO_NUMBER(CNPJ), NOME, ENDERECO FROM (
> > SELECT * FROM (
> > SELECT
> > CONCAT ('1',L_CLI.CGC) CHAVE,
> > REPLACE(REPLACE(REPLACE(L_CLI.CGC,'.',null),'/',null),'-',null) CNPJ,
> > L_CLI.NOME NOME,
> > L_CLI.END ENDERECO,
> > FROM
> > L.CLIENTE L_CLI,
> > L.REPRESENTANTE L_REP,
> > L.SUPERVISOR L_SUP
> > WHERE
> > L_CLI.CODREP = L_REP.CODIGO
> > AND
> > L_REP.SUPERVISOR = L_SUP.CODIGO
> > )
> > );
> >
> > Criei outra VIEW com declare
> > set serverout on;
> > DECLARE
> > var_CNPJ number ;
> > BEGIN
> > SELECT CNPJ INTO var_CNPJ FROM (
> > SELECT
> > REPLACE(REPLACE(REPLACE(L_CLI0A0.CGC,'.',null),'/',null),'-',null) cnpj,
> > L_CLI.NOME NOME,
> > L_CLI.END ENDERECO,
> > FROM
> > L.CLIENTE L_CLI,
> > L.REPRESENTANTE L_REP,
> > L.SUPERVISOR L_SUP
> > WHERE
> > L_CLI.CODREP = L_REP.CODIGO
> > AND
> > L_REP.SUPERVISOR = L_SUP.CODIGO
> > and rownum < 6
> > );
> > END;
> > /
> > Mas esta aparece a mensagem ORA-01422: exact fetch returns more than
> > requested number of rows.
> > Verificando a mensagem no metalink, existe um bug para minha versão que é
> > 10.1.0.2.0.
> > E lá existe uma outra forma de fazer que é:
> > DECLARE
> > TYPE NumList IS TABLE OF NUMBER;
> > TYPE NameList IS TABLE OF VARCHAR2(15);
> > empnos NumList;
> > enames NameList;
> > sals NumList;
> > BEGIN
> > EXECUTE IMMEDIATE 'SELECT empno, ename FROM emp'
> > BULK COLLECT INTO empnos, enames;
> > DBMS_OUTPUT.PUT_LINE('Empployess collected = '||empnos.count);
> > END;
> > /
> >
> > ============
> > Alguém consegue VER uma solução para a criação de uma VIEW?????
> > Obrigado a todos
> > W.Pedroti
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> --
> Marcio Portes
> http://mportes.blogspot.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>


[As partes desta mensagem que não continham texto foram removidas]

Responder a