Re: [oracle_br] Execução de Procedures - SQL PLUS
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
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
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
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