Funções com Tabelas do Data Dictionary

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #74240
    Anônimo
    Convidado

    estou tentando fazer essa fun??o e esta dando o seguinte erro:

    0/0 PL/SQL: Compilation unit analysis terminated
    3/17 PLS-00201: identifier ‘SYS.DBA_TABLES’ must be declared

    segue abaixo a fun??o:

    CREATE OR REPLACE FUNCTION EXISTE_TABELA
    (NOME_TABELA IN DBA_TABLES.TABLE_NAME%TYPE)
    RETURN CHAR
    IS
    vTABELA VARCHAR2(50);
    BEGIN
    SELECT TABLE_NAME INTO vTABELA FROM DBA_TABLES WHERE DBA_TABLES.TABLE_NAME = NOME_TABELA;
    IF vTABELA = NOME_TABELA THEN
    RETURN(‘S’);
    ELSE
    RETURN(‘N’);
    END IF;
    END EXISTE_TABELA;

    se alguem puder me ajudar…muito obrigado.

    #74244
    Anônimo
    Convidado

    CREATE OR REPLACE FUNCTION EXISTE_TABELA(NOME_TABELA IN ALL_TABLES.TABLE_NAME%TYPE)
    RETURN VARCHAR2
    IS
    vTABELA VARCHAR2(50);
    BEGIN
    SELECT TABLE_NAME INTO vTABELA FROM ALL_TABLES WHERE ALL_TABLES.TABLE_NAME = NOME_TABELA;
    IF vTABELA = NOME_TABELA THEN
    RETURN(‘S’);
    ELSE
    RETURN(‘N’);
    END IF;
    END EXISTE_TABELA;
    /

    #74245
    Anônimo
    Convidado

    cara tenta assim, outra coloquei all_ pois qualquer usuraio tem premiss?o e vc n?o tem que por o usuario tipo sys.existe_tabela

    o que estava errado era o tipo de retorno char, ai mudei pra varchar2

    CREATE OR REPLACE FUNCTION EXISTE_TABELA(NOME_TABELA IN ALL_TABLES.TABLE_NAME%TYPE)
    RETURN VARCHAR2
    IS
    vTABELA VARCHAR2(50);
    BEGIN
    SELECT TABLE_NAME INTO vTABELA FROM ALL_TABLES WHERE ALL_TABLES.TABLE_NAME = NOME_TABELA;
    IF vTABELA = NOME_TABELA THEN
    RETURN(‘S’);
    ELSE
    RETURN(‘N’);
    END IF;
    END EXISTE_TABELA;
    /

    #74926
    Anônimo
    Convidado

    [quote=”Sadraque”:2z9slv6d]estou tentando fazer essa fun??o e esta dando o seguinte erro:

    0/0 PL/SQL: Compilation unit analysis terminated
    3/17 PLS-00201: identifier ‘SYS.DBA_TABLES’ must be declared

    segue abaixo a fun??o:

    CREATE OR REPLACE FUNCTION EXISTE_TABELA
    (NOME_TABELA IN DBA_TABLES.TABLE_NAME%TYPE)
    RETURN CHAR
    IS
    vTABELA VARCHAR2(50);
    BEGIN
    SELECT TABLE_NAME INTO vTABELA FROM DBA_TABLES WHERE DBA_TABLES.TABLE_NAME = NOME_TABELA;
    IF vTABELA = NOME_TABELA THEN
    RETURN(‘S’);
    ELSE
    RETURN(‘N’);
    END IF;
    END EXISTE_TABELA;

    se alguem puder me ajudar…muito obrigado.[/quote]

    #74928
    Avatar de Marcio68AlmeidaMarcio68Almeida
    Participante

    Provavelmente o usu?rio que ir? possuir essa fun??o n?o tem direito de consultar tabelas SYS.DBA_???

    #75213
    Avatar de ebertfmebertfm
    Participante

    para funcionar no formato que vc escreveu, basta fazer o comando abaixo como usu?rio sys:

    grant select on dba_tables to nome_do_usuario_dono_da_funcao;

    Abracos.

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Você deve fazer login para responder a este tópico.
plugins premium WordPress