Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Alguém consegue me dizer porque essa procedure não copila?
PROCEDURE EliminaPapel (v_COD_PAPEL PAPEL.COD_PAPEL%TYPE) AS
DECLARE
BEGIN
DELETE FROM PAPEL
WHERE cod_papel= **v_COD_PAPEL** and papel.cod_papel NOT IN (SELECT DISTINCT cod_papel from participacao);
END EliminaPapel;
seguinte erro:
Erro ao iniciar na linha 1 no comando
PROCEDURE EliminaPapel (v_COD_PAPEL PAPEL.COD_PAPEL%TYPE) AS
Relatório de erro:
Comando Desconhecido
Erro ao iniciar na linha 2 no comando
DECLARE
BEGIN
DELETE FROM PAPEL
WHERE cod_papel= v_COD_PAPEL and papel.cod_papel NOT IN (SELECT DISTINCT cod_papel from participacao);
END EliminaPapel;
Relatório de erro:
ORA-06550: linha 5, coluna 21:
PL/SQL: ORA-00904: **"V_COD_PAPEL": identificador inválido**
ORA-06550: linha 4, coluna 7:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Abrc>
Em 16/05/2018 at 10:31, Motta disse:
Qual o tipo de PAPEL.COD_PAPEL ?
--Tabela Papel
CREATE TABLE PAPEL(
**COD_PAPEL NUMBER GENERATED BY DEFAULT AS IDENTITY,**
DESCRICAO VARCHAR2(60) NOT NULL,
CONSTRAINT PK_PAPEL PRIMARY KEY (COD_PAPEL),
CONSTRAINT U_PAPEL_01 UNIQUE (DESCRICAO)
)
;
--Tabela Participacao
CREATE TABLE PARTICIPACAO(
COD_PAPEL NUMBER(10, 0) NOT NULL,
COD_PROFISSIONAL_CINEMA NUMBER(10, 0) NOT NULL,
COD_FILME NUMBER(10, 0) NOT NULL,
CONSTRAINT PK_PARTICIPACAO PRIMARY KEY (COD_PAPEL, COD_PROFISSIONAL_CINEMA, COD_FILME)
)
;
Coloquei o **IN** e nada...
>
Em 16/05/2018 at 10:31, Motta disse:
falta algo neste where
No where não sei se o senhor estava se referindo ao papel.cod_papel.
PROCEDURE EliminaPapel (v_COD_PAPEL in number) AS
DECLARE
BEGIN
DELETE FROM PAPEL
WHERE **papel.**cod_papel = v_COD_PAPEL and papel.cod_papel NOT IN (SELECT DISTINCT cod_papel from participacao);
END EliminaPapel;
Continua sem rodar.... :-(Que erro ocorre ?
Resolvido.
CREATE OR REPLACE PROCEDURE EliminaPapel (v_COD_PAPEL in number)
AS
BEGIN
DELETE FROM PAPEL
WHERE PAPEL.COD_PAPEL = v_COD_PAPEL
and PAPEL.cod_papel NOT IN (SELECT DISTINCT cod_papel from participacao);
END EliminaPapel;
Obrigado Motta.
Qual o tipo de PAPEL.COD_PAPEL ?
falta algo neste where
PROCEDURE EliminaPapel (v_COD_PAPEL IN PAPEL.COD_PAPEL%TYPE)