› Fóruns › SQL e PL/SQL › Procedure – Erro ORA-0001/ ORA-06512
- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 7 meses atrás por
femag.
-
AutorPosts
-
20 de outubro de 2011 às 5:20 pm #101328
femag
ParticipanteOlá,
estou com o seguinte erro:
ERRO na linha 1:
ORA-00001: restriþÒo exclusiva (SYSTEM.SYS_C004102) violada
ORA-06512: em “SYSTEM.PRC_NOVO_OPERADOR”, line 29
ORA-06512: em line 1… na procedure:
CREATE OR REPLACE PROCEDURE prc_novo_operador
(v_cod IN operador.cd_operador%TYPE,
v_fun IN operador.cd_funcionario%TYPE,
v_log IN operador.nm_login%TYPE,
v_sen IN operador.cd_senha%TYPE)
IS
v_log_exist VARCHAR(15);CURSOR cursor_login
IS
SELECT nm_login
FROM operador;BEGIN
OPEN cursor_login;
LOOP
FETCH cursor_login INTO v_log_exist;
EXIT WHEN cursor_login%NOTFOUND;
IF v_log_exist = v_log THEN
DBMS_OUTPUT.PUT_LINE(‘Ja existe um login cadastrado com este
nome!’);
ELSE
INSERT INTO operador(cd_operador,cd_funcionario, nm_login,
cd_senha)
VALUES(v_cod,v_fun,v_log,v_sen);
END IF;
END LOOP;
COMMIT;
CLOSE cursor_login;
END;
/O que é estranho é que quando chamei a procedure pela primeira vez funcionou direitinho. Na segunda vez aparece esse erro.
Agradeço desde já!
20 de outubro de 2011 às 5:42 pm #101330felipeg
ParticipanteOlá,
Primeiro verifique do que se trata esta restrição SYS_C004102.
Da uma olhada na ALL_CONSTRAINTS.Segundo, o que você passou como valores no primeiro e segundo testes, ele já não tem nada igual ou campos com um dado de upper diferente, tipo USUARIO e usuario.
E por último, só uma dica, tente não criar,manter ou mexer em objetos dentro do SYS ou do SYSTEM, crie um schema próprio pra isso.
Atenciosamente,
Felipe.20 de outubro de 2011 às 6:49 pm #101332jspaulonci
ParticipanteErros ORA-065XXXX são erros genéricos, o torna a correção as vezes um pouco desafiadora.
Quanto a questão do objeto no SYSTEM eu diria que eu evitaria criar qualquer objeto nesses owners (incluindo o system que não aparece nessa relação)
select *
from sys.ku_noexp_tab where obj_type=’SCHEMA’;Em relação aos objetos com o prefixo ALL_*, é importante colocar que, um select neles trará apenas o que o usuário em questão tem acesso .
ALL_OBJECT é diferente de DBA_OBJECTS, DBA_OBJECTS possue todos os objetos do banco, já a ALL_OBJECTS , possui somente os objetos que o owner possue permissão.
22 de outubro de 2011 às 4:17 am #101351femag
ParticipanteIrei pesquisar sobre a restrição SYS_C004102 e criar um novo schema.
Obrigada! -
AutorPosts
- Você deve fazer login para responder a este tópico.
› Fóruns › SQL e PL/SQL › Procedure – Erro ORA-0001/ ORA-06512