Ir para conteúdo
Alexandre Garcia

Procedure nao compila

Recommended Posts

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o tipo de PAPEL.COD_PAPEL ?

 

falta algo neste where

 

WHERE cod_papel= v_COD_PAPEL and papel.cod_p

 

Coloque também um IN na definição do parãmetro

 

PROCEDURE EliminaPapel (v_COD_PAPEL IN PAPEL.COD_PAPEL%TYPE) 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

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....  :-(

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por GabyBD
      Poderiam me ajudar com a criação desse código ? Segue imagem em anexo 

    • Por Rafael Motta
      Boa tarde pessoal! preciso de uma ajuda, preciso fazer um select dentro de uma procedure no banco de dados e uso PDO, nao to conseguinto chamar a procedure e não faço ideia como faço um select dela, segue abaixo os codigos de exmplo...
       
      a primeira coisa que queria fazer era inserir o seguinte select 
      select COD_RAZAO, NOME, COD_CARTEIRA, NOME_REPRES, coalesce(EMISSAO,'') as EMISSAO, COD_GRUPO from consulta_outras_razoes_ord_fat where COD_CLIENTE = :idCustomer order by emissao desc, cod_razao'  
       
      abaixo CONSULTA_OUTRAS_RAZOES_ORD_FAT é o nome da procedure no banco
      function outrasRazoes($idCustomer) { $pdo = conecta(); try { $sql = "CALL CONSULTA_OUTRAS_RAZOES_ORD_FAT(':idCustomer')"; $consultar = $pdo->prepare($sql); $consultar->bindValue(':idCustomer', $idCustomer, PDO::PARAM_INT); $consultar->execute(); $resultado = $consultar->fetch(PDO::FETCH_OBJ); if ($consultar->rowCount() > 0) { return $resultado; } else { return false; } } catch (PDOException $e) { echo $e->getMessage(); } }  
      abaixo segue a procedure do banco
      begin for select OUTRAS_RAZOES.cod_razao,CLIENTES.NOME, CLIENTES.COD_CARTEIRA, REPRESENTANTES.NOME AS NOME_REPRES, clientes.cod_grupo from clientes inner join outras_razoes on (clientes.codigo = outras_razoes.cod_razao) inner join REPRESENTANTES on (CLIENTES.REPRESENTANTE=REPRESENTANTES.CODIGO) where OUTRAS_RAZOES.cod_cliente=:cod into cod_razao, nome, cod_carteira, nome_repres, cod_grupo do begin select max(notas.emissao) as emissao from notas inner join notas_item on (notas.nota = notas_item.nota) inner join naturezas_operacao on (notas_item.cod_natureza = naturezas_operacao.cod_natureza) and (notas_item.seq = naturezas_operacao.seq) where notas.cod_cliente = :cod_razao and naturezas_operacao.tipo = 1 into emissao; begin suspend; end end end  
    • Por RenatoD
      Boa noite galera,
      Estou com o seguinte problema
       
      Eu tenho uma procedure que me retorna todas as informações das transações, e esta funcionando.
      porem eu tenho a seguinte situação... a procedure das transações só me retorna a opção que contem na transação mas, eu também preciso mostrar as outras opções disponíveis no combobox. E para fazer isso, eu estou tentando fazer a chamada de outra procedure que deve me retornar todos os dados de uma tabela exceto por aquela que já contem na transação para alimentar o combobox.
      Porem a segunda procedure não está me retornando nada... não mostra nada no print_r e nem mensagem de erro... Já testei a procedure diretamente no banco de dados e está funcionando.
      Alguém sabe me dizer oque estou fazendo de errado ou alguma outra maneira de alimentar o combobox desde que seja utilizando procedure ?
       
      <?php session_start(); require 'banco_de_dados.php'; $stmt = $conn->prepare("CALL Listar_Todas_Transacao(?)"); $stmt->bindParam(1,$_SESSION['id_user'], PDO::PARAM_INT); $stmt->execute(); $ReturnTrans = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($ReturnTrans as $row){ ?> <table cellpadding="2px"> <form name="Transacao" action="Update_transacao.php" method="post"> <tr><td colspan="5px">Tipo de Transação</td></tr> <tr> <td> <select name="tipo_transacao"> <option value="<?php echo $row['Tipo_transacao_id']?>"><?php echo $row['nome_tipo_transacao']?></option> <?php $tps_tran = $conn->prepare("Call ReturnAllTipo_Transacao(?)"); $tps_tran->bindParam(1, $row['Tipo_transacao_id'], PDO::PARAM_INT); $tps_tran->execute(); $result_tps_trans = $tps_tran->fetchAll(PDO::FETCH_ASSOC); foreach ($result_tps_trans as $row1){ ?> <option value="<?php echo $row1['Tipo_transacao_id']?>"><?php echo $row1['nome_tipo_transacao']?></option> <?php } ?> </select> </td> </tr> </form> </table> <?php } ?>    
    • Por Marcelo_Ribeiro
      E aí, blz?

      Tô com um problemão. Tenho uma aplicação Delphi que chama uma procedure. Eu inicio uma transação  na aplicação, chamo a procedure, em seguida  faço outras coisas na aplicação e dou um commit. Porém, se dois usuários executam esse processo ao mesmo tempo, dá erro de deadlock.

      Fiz um teste e executei a procedure duas vezes concomitantemente, e ainda assim deu deadlock

      Essa procedure só faz delete em várias tabelas, onde passo o id do documento. A instrução é basicamente delete from tabela where id =numeroid

      Não tenho ideia do que pode ser.

      Muito obrigado. Fico no aguardo.
        Valeu
    • Por MANOEL ÉRIK P. DA SILVA
      Gostaria de saber onde está o erro desta procedure, pois ela coloca todos os campos do registros: PROCEDURE `Consultar---ome`(Nome varchar(70))
      begin
          select   *   from TABELA    where   Nome LIKE concat  ('%', Nome,'%');   
      end
      Obrigado pela ajuda.
      Manoel Érik
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.