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]>:

>   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]

Responder a