- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 19 anos, 10 meses atrás por
ebertfm.
-
AutorPosts
-
6 de janeiro de 2005 às 6:29 pm #74240
Anônimo
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 declaredsegue 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.
7 de janeiro de 2005 às 8:00 pm #74244Anônimo
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;
/7 de janeiro de 2005 às 8:01 pm #74245Anônimo
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;
/13 de dezembro de 2005 às 8:30 pm #74926Anônimo
[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 declaredsegue 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]
14 de dezembro de 2005 às 4:37 pm #74928Marcio68Almeida
ParticipanteProvavelmente o usu?rio que ir? possuir essa fun??o n?o tem direito de consultar tabelas SYS.DBA_???
7 de fevereiro de 2006 às 10:15 pm #75213ebertfm
Participantepara 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.
-
AutorPosts
- Você deve fazer login para responder a este tópico.