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]

Responder a