Re: [oracle_br] Execução de Procedures - SQL PLUS

2009-11-23 Por tôpico Felipe Ferreira
Ola *Matheus*,

Vc poderia postar o código dessa mudança que vc realizou não é mesmo??? :-)
Obrigado pela atenção!!!

Felipe Ferreira

==
CAMPANHA POR UMA INTERNET SEGURA:
Proteja o endereço de seus amigos como estou protegendo o seu. Ao enviar
mensagens use SEMPRE o Cco (cópia oculta ou Bcc (Blind carbon copy).
Assim TODOS os endereços estarão preservados.  E, claro, antes de encaminhar
um e-mail, delete todas as informações que apareçam no corpo do e-mail e que
possam ser usadas por hackers ou qualquer pessoa que possa enviar SPAM.


2009/11/17 Matheus Malta maltamath...@gmail.com



 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 oracle_br%40yahoogrupos.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 maltamatheus%40gmail.com
 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.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

[oracle_br] Execução de Procedures - SQL PLUS

2009-11-17 Por tôpico Matheus Malta
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]



Re: [oracle_br] Execução de Procedures - SQL PLUS

2009-11-17 Por tôpico Fernando Franquini 'capin'
Matheus,

Deve acontecer porque voce ta precisando de parametros na procedure.
Porque voce nao executa na propria procedure o select necessario e com o
retorno desse voce usa na sequencia?

Voce pode utilizar procedures que precisem de parametros e outras que nao
precisem de parametros, tem que ver extatamente o seu objetivo.

Manual:
http://www.oracle.com/pls/db112/portal.portal_db?selected=5frame=#sql_and_pl_sql_languages

att,
capin

2009/11/17 Matheus Malta maltamath...@gmail.com

 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]



 


 --
 Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
 inteira responsabilidade de seus remetentes.
 Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/

 --
 Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
 » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
 http://www.oraclebr.com.br/
 
 Links do Yahoo! Grupos





-- 
__
Fernando Franquini - Capin
Bacharel em Ciencias da Computacao - UFSC
Analista de Sistemas / DBA
emails: ferna...@wf5.com.br / fernando.franqu...@gmail.com
Celular: (48) 99024047 ou (48) 99248212
Florianópolis - SC - Brasil
www.wf5.com.br


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



Re: [oracle_br] Execução de Procedures - SQL PLUS

2009-11-17 Por tôpico Roberto Oshikawa
SET SERVEROUTPUT ON
Declare
v_mat   func.cd_mat%TYPE:=1;
v_depto func.cd_depto%TYPE:=1;
v_cargo func.nr_cargo%TYPE:=1;
v_sal   func.vl_sal%TYPE:=1;
v_ret   varchar2(300):=' ';
begin
  prc_atualiza_func(v_mat,v_depto,v_cargo,v_sal,v_ret);
  DBMS_OUTPUT.put_line( v_ret ) ;
end
/




2009/11/17 Caio Spadafora caiospadaf...@yahoo.com.br



 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 maltamatheus%40gmail.com
 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.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