problemas a criar procedures

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

Olá a tdos estou tento dificuldade para criar uma procedures

Selecionar tudo

create or replace PROCEDURE PROCLIENTESFOTO
(PCODIGO IN NUMBER,
 PFOTO   IN BLOB) 
IS
 BEGIN
  P_SQL_CODE  :=0;
  P_SQL_MSG   :='';
  

INSERT INTO  PROCLIENTESFOTO(CODIGO,FOTO)
                      VALUES(PCODIGO,PFOTO);
  EXCEPTION
    WHEN OTHERS THEN
    P_SQL_CODE  :=SQLCODE;
    P_SQL_MSG   :=SQLERRM;
    
    
END PROCLIENTESFOTO;    

Esse são alguns dos erro

Selecionar tudo

Error(16,5): PLS-00201: o identificador 'P_SQL_MSG' deve ser declarado

Error(15,5): PLS-00201: o identificador 'P_SQL_CODE' deve ser declarado
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

create or replace PROCEDURE PROCLIENTESFOTO 
(PCODIGO IN NUMBER, 
 PFOTO   IN BLOB) 
IS 
BEGIN
  P_SQL_CODE  :=0; 
  P_SQL_MSG   :=''; 

 BEGIN   

INSERT INTO  PROCLIENTESFOTO(CODIGO,FOTO) 
                      VALUES(PCODIGO,PFOTO); 
  EXCEPTION 
    WHEN OTHERS THEN 
    P_SQL_CODE  :=SQLCODE; 
    P_SQL_MSG   :=SQLERRM; 
    
END;
END PROCLIENTESFOTO;
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Faltou declarar as variáveis:

Selecionar tudo

(PCODIGO IN NUMBER, 
 PFOTO   IN BLOB) 
IS 
 BEGIN 
  P_SQL_CODE  :=0; 
  P_SQL_MSG   :=''; 
  
Faça da seguinte forma:

Selecionar tudo

(PCODIGO IN NUMBER, 
 PFOTO   IN BLOB) 
IS 
  P_SQL_CODE NUMBER;             --
  P_SQL_MSG VARCHAR2(1000);  --
 BEGIN 
  P_SQL_CODE  :=0; 
  P_SQL_MSG   :=''; 
  
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

Boa noite !!!

agora esta dado esse erro

Selecionar tudo

Error(13,1): PL/SQL: SQL Statement ignored
Error(13,14): PL/SQL: ORA-04044: procedimento, função, pacote ou tipo não é permitido aqui

Selecionar tudo

PROCEDURE PROCLIENTESFOTO
(PCODIGO IN NUMBER,
 PFOTO   IN BLOB) 
IS
  P_SQL_CODE NUMBER;             --
  P_SQL_MSG VARCHAR2(1000);
 BEGIN
  P_SQL_CODE  :=0;
  P_SQL_MSG   :='';
  

INSERT INTO  PROCLIENTESFOTO(CODIGO,
                             FOTO)
                    VALUES
                            (PCODIGO,
                             PFOTO);
  EXCEPTION
    WHEN OTHERS THEN
    P_SQL_CODE  :=SQLCODE;
    P_SQL_MSG   :=SQLERRM;
    
    
END PROCLIENTESFOTO; 
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Você está no SQL*Plus? Ou alguma ferramenta visual?
Caso esteja no SQL*Plus, faça da seguinte forma o cabeçalho dela:

Selecionar tudo

CREATE OR REPLACE PROCEDURE PROCLIENTESFOTO 
...
qualquer coisa, manda ai.
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

trevisolli escreveu:Brother,

Você está no SQL*Plus? Ou alguma ferramenta visual?
Caso esteja no SQL*Plus, faça da seguinte forma o cabeçalho dela:

Selecionar tudo

CREATE OR REPLACE PROCEDURE PROCLIENTESFOTO 
...
qualquer coisa, manda ai.
este problema não seria a falta do declare ???
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

Eu estou utilizado o oracle sql developer

e já tentei fazer dessa forma como você me mostrou e também não adiantou
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

Olá onde eu colocaria essa declaração ?
poderia me mostras muito obrigado pela resposta até +
Avatar do usuário
TBou
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 136
Registrado em: Qui, 05 Ago 2004 9:33 am
Localização: Campo Grande - MS
Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

assim tem q ser

Selecionar tudo

CREATE OR REPLACE PROCEDURE PROCLIENTESFOTO
(PCODIGO IN NUMBER,
 PFOTO   IN BLOB)
IS
  P_SQL_CODE NUMBER;             --
  P_SQL_MSG VARCHAR2(1000);
 BEGIN
  P_SQL_CODE  :=0;
  P_SQL_MSG   :='';
 

INSERT INTO  PROCLIENTESFOTO(CODIGO,
                             FOTO)
                    VALUES
                            (PCODIGO,
                             PFOTO);
  EXCEPTION
    WHEN OTHERS THEN
    P_SQL_CODE  :=SQLCODE;
    P_SQL_MSG   :=SQLERRM;
   
   
END PROCLIENTESFOTO;
no seu estava faltando o create or replace na frente do procedure
falou
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Tente com o exemplo acima, do Thiago, q é pra resolver teu problema.
Quanto ao DECLARE, você poderia jogar a procedure num bloco anônimo, mas, caso queira que ela seja de banco mesmo, realize o procedimento do tópico anterior.

qualquer coisa, manda ai.
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

MAIS NO MEU PRIMEIRO EXEMPLO EU INSERIR O

Selecionar tudo

CREATE OR REPLACE PROCEDURE PROCLIENTESFOTO 
E MESMO ASSIM NÃO FUNCIONOU, UM OUTRO CARA FALOU QUE TALVES ESTAVA FALTANDO UM MAIS A ONDE IRIAMOS COLOCAR ESSE DECLARE ?
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

create or replace PROCEDURE PROCLIENTESFOTO 
(PCODIGO IN NUMBER, 
 PFOTO   IN BLOB) 
IS 
  P_SQL_CODE  NUMBER; 
  P_SQL_MSG   VARCHAR2(30); 
 BEGIN 
  P_SQL_CODE  :=0; 
  P_SQL_MSG   :=''; 
  

INSERT INTO  PROCLIENTESFOTO(CODIGO,FOTO) 
                      VALUES(PCODIGO,PFOTO); 
  EXCEPTION 
    WHEN OTHERS THEN 
    P_SQL_CODE  :=SQLCODE; 
    P_SQL_MSG   :=SQLERRM; 
    
    
END PROCLIENTESFOTO; 
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

Mano !!!

Esta dado erro ainda !!!

Selecionar tudo

Error: PL/SQL: ORA-04044: procedimento, função, pacote ou tipo não é permitido aqui
Line: 12
muito obrigado pela resposta
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Descobri aqui...

O nome da procedure que você está tentando criar, é o mesmo nome de um outro objeto existente no teu banco de dados, no caso, o nome da tua tabela.

Faça o seguinte, crie a procedure com outro nome, como no exemplo abaixo, pois, criei aqui na minha máquina e deu certinho:

Selecionar tudo

CREATE or replace PROCEDURE prc_PROCLIENTESFOTO 
(PCODIGO IN NUMBER, 
 PFOTO   IN BLOB) 
IS 
  P_SQL_CODE  NUMBER; 
  P_SQL_MSG   VARCHAR2(30); 

 BEGIN 
 
 P_SQL_CODE  :=0; 
 P_SQL_MSG   :=''; 
  

  INSERT INTO  PROCLIENTESFOTO(CODIGO,FOTO) 
                        VALUES(PCODIGO,PFOTO); 
  EXCEPTION 
    WHEN OTHERS THEN 
      P_SQL_CODE  := SQLCODE; 
      P_SQL_MSG   := SQLERRM; 
  NULL;  
    
END prc_PROCLIENTESFOTO; 
Só adicionei o prc_ ao nome da tua proc, beleza?
qualquer coisa, manda ai.
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

mano
continua dado o mesmo erro,

Selecionar tudo

Error: PL/SQL: ORA-04044: procedimento, função, pacote ou tipo não é permitido aqui
Line: 14
o que eu percebi e que ele da erro nesse cara !!

Selecionar tudo

INSERT INTO   PROCLIENTESFOTO(CODIGO,FOTO)
                        VALUES(PCODIGO,PFOTO);
mais não consegui encontra o erro !!!!

mais uma vez meu muito obrigado
eduardo.d2
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Ter, 08 Jan 2008 9:13 pm
Localização: são paulo
Eduardo Andrade

funcionouuuuuuuuuuuuuuuuuuuuuuuu!

Selecionar tudo

CREATE OR REPLACE PROCEDURE PRO_CLIENTESFOTO
(PCODIGO IN NUMBER,
 PFOTO   IN BLOB)
IS
  P_SQL_CODE  NUMBER;
  P_SQL_MSG   VARCHAR2(30);

 BEGIN
 
 P_SQL_CODE  :=0;
 P_SQL_MSG   :='';
 

  INSERT INTO   FOTO(CODIGO,FOTO)
                        VALUES(PCODIGO,PFOTO);
  EXCEPTION
    WHEN OTHERS THEN
      P_SQL_CODE  := SQLCODE;
      P_SQL_MSG   := SQLERRM;
  NULL; 
   
END PRO_CLIENTESFOTO
o erro estava no nome da tabela ahahah valeu rapaziada abraço até mais
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 15 visitantes