Olá Caio, boa noite!

Eu criei normalmente as funções e estou utilizando elas dentro das procedures 
normalmente.. Elas estão funcionando OK...

Estava enfrentando dificuldades quanto a chamar as procedures, mas efetuei umas 
correções nos scripts responsáveis pela execução das procedures e agora estão 
OK...

Mesmo assim, obrigado pela ajuda...

Matheus Malta
  ----- Original Message ----- 
  From: Caio Spadafora 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Tuesday, November 17, 2009 6:57 PM
  Subject: Res: [oracle_br] Execução de Procedures - SQL PLUS


    
  Matheus,

  Vou tentar arrumar um tempo para simular aqui, mas de qualquer maneira você 
não precisa (até onde eu entendi o que você falou) incorporar a uma procedure a 
função, você pode criar uma função pura e simples sem estar incorporada a 
nenhum objeto.

  []'s
  Caio Spadafora.

  ________________________________
  De: Matheus Malta <maltamath...@gmail.com>
  Para: oracle_br@yahoogrupos.com.br
  Enviadas: Terça-feira, 17 de Novembro de 2009 16:07:03
  Assunto: Re: [oracle_br] Execução de Procedures - SQL PLUS

  Olá Caio!

  Sim, estou executando a procedure em ambiente SQLPLUS...

  No e_mail que eu te mandei eu passei (logo abaixo do código da procedure) um 
outro script que é o responsável por CHAMAR a procedure que eu criei...

  Estou alterando os arquivos de execução da procedure para evitar esse tipo de 
erro.. tomara que dê certo...

  Estou criando também as funções para poder incorporá-las nas procedures.. .

  É que são procedures muito simples e que não necessitam de repente de ter uma 
função incorporada a elas...

  Mesmo assim, obrigado!

  Atenciosamente,

  Matheus Malta
  ----- Original Message ----- 
  From: Caio Spadafora 
  To: oracle...@yahoogrup os.com.br 
  Sent: Tuesday, November 17, 2009 3:22 PM
  Subject: Res: [oracle_br] Execução de Procedures - SQL PLUS

  Matheus,

  Você está executando esse procedure a partir do SQL*Plus? Em caso afirmativo 
você declarou uma variável para receber a saída da sua função? 

  Por exemplo: 

  var saida varchar2

  exec prc_atualiza_ func(par1,par2, ..., parN, :saida);

  print saida;

  Outra dúvida, se você só tem um parâmetro de saída, por que você não está 
utilizando uma função?

  Atenciosamente,
  Caio Spadafora

  ____________ _________ _________ __
  De: Matheus Malta <maltamatheus@ gmail.com>
  Para: oracle...@yahoogrup os.com.br
  Enviadas: Terça-feira, 17 de Novembro de 2009 15:06:32
  Assunto: Re: [oracle_br] Execução de Procedures - SQL PLUS

  Olá Caio, blz?

  Segue abaixo o código da minha procedure... Estou passando esta como exemplo, 
mas ressalto, acontece com todas. Estou passando também o código de execução da 
procedure, talvez isso ajude também.

  PROCEDURE

  -- Procedure que vai atualizar o cargo, departamento e salário do funcionário
  CREATE OR REPLACE PROCEDURE prc_atualiza_ func
  (v_mat IN func.cd_mat% TYPE,
  v_depto IN func.cd_depto% TYPE,
  v_cargo IN func.nr_cargo% TYPE,
  v_sal IN func.vl_sal% TYPE,
  v_ret OUT VARCHAR2
  )

  IS

  -- Declaração das variáveis
  v_ver NUMBER;
  v_ok BOOLEAN;
  v_erro EXCEPTION;

  BEGIN

  --Verifica se o funcionário existe
  SELECT COUNT(cd_mat) INTO v_ver
  FROM func
  WHERE cd_mat = v_mat;

  IF v_ver = 0 
  THEN v_ok := FALSE;
  RAISE v_erro;
  ELSE v_ok := TRUE;
  END IF;

  --Atualiza os campos cargo, departamento e salário do funcionário
  UPDATE func 
  SET cd_depto = upper(v_depto) , 
  nr_cargo = v_cargo,
  vl_sal = v_sal
  WHERE cd_mat = v_mat;

  v_ret := 'REGISTRO ATUALIZADO COM SUCESSO!';

  -- Salva a alteração
  COMMIT;

  -- EXCEÇÃO

  EXCEPTION
  WHEN v_erro THEN
  v_ok := FALSE;
  v_ret := 'NÃO EXISTE FUNCIONÁRIO DE MATRÍCULA '||v_mat;
  ROLLBACK;

  WHEN OTHERS THEN
  v_ret := SQLERRM;
  ROLLBACK;
  END prc_atualiza_ func;
  /

  EXECUÇÃO DA PROCEDURE ACIMA

  call prc_atualiza_ func(&MATRICULA, '&DEPTO', &CARGO,&SALARIO, :v_ret);
  PRINT :v_ret;

  Qualquer coisa, é só falar galera!

  Matheus Malta
  ----- Original Message ----- 
  From: Caio Spadafora 
  To: oracle...@yahoogrup os.com.br 
  Sent: Tuesday, November 17, 2009 11:57 AM
  Subject: Res: [oracle_br] Execução de Procedures - SQL PLUS

  Matheus,

  Você pode disponibilizar o código da sua procedure?

  Atenciosamente,
  Caio Spadafora.

  ____________ _________ _________ __
  De: Matheus Malta <maltamatheus@ gmail.com>
  Para: Oracle - Grupos <oracle...@yahoogru p os.com.br>
  Enviadas: Terça-feira, 17 de Novembro de 2009 11:06:53
  Assunto: [oracle_br] Execução de Procedures - SQL PLUS

  Olá PessoALL, bom dia!

  Estou criando algumas procedures no SQL/PLUS e, quando eu crio arquivo para 
chamar a procedure, eu sempre encontro o seguinte erro:

  SP2-0552: Variável de ligação "V_RET" não declarada.

  No entanto, esse erro não acontece quando, antes de executar a procedure em 
questão, eu faço um SELECT * FROM TABELA antes... 

  Alguém saberia me dizer por que isso acontece?

  É meio complicado se, toda vez q for rodar uma procedure, eu tiver que fazer 
um SELECT na tabela antes...

  Tem como configurar de maneira q não precise ficar executando esse comando 
toda vez?

  Outra coisa: Alguém tem o link aí do SQL*PLUS User's Guide Reference, pq eu 
não tô conseguindo encontrar para baixar...

  Valew pessoALL!

  Matheus Malta

  [As partes desta mensagem que não continham texto foram removidas]

  ____________ _________ _________ _________ _________ _________ _
  Veja quais são os assuntos do momento no Yahoo! +Buscados
  http://br.maisbusca dos.yahoo. com

  [As partes desta mensagem que não continham texto foram removidas]

  [As partes desta mensagem que não continham texto foram removidas]

  ____________ _________ _________ _________ _________ _________ _
  Veja quais são os assuntos do momento no Yahoo! +Buscados
  http://br.maisbusca dos.yahoo. com

  [As partes desta mensagem que não continham texto foram removidas]

  [As partes desta mensagem que não continham texto foram removidas]

  __________________________________________________________
  Veja quais são os assuntos do momento no Yahoo! +Buscados
  http://br.maisbuscados.yahoo.com

  [As partes desta mensagem que não continham texto foram removidas]



  

[As partes desta mensagem que não continham texto foram removidas]

Responder a