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]