Mostrando postagens com marcador procedure. Mostrar todas as postagens
Mostrando postagens com marcador procedure. Mostrar todas as postagens

quinta-feira, julho 11, 2013

Enviando e-mail a partir do Oracle

HI,

Muito bom esse recurso do Oracle. Implementei hoje uma rotina de envio de e-mail. Pedi pro DBA liberar as permissões. Criei a procedure para enviar o e-mail e outra procedure para pegar os usuários e disparar o e-mail para cada um.

Só enfrentei um problema. Não estava mantendo a acentuação. Mas com uma busca no google encontrei a solução. Pra considerar a acentuação tem que usar o comando UTL_SMTP.WRITE_RAW_DATA(v_mail_conn, UTL_RAW.CAST_TO_RAW(UTL_TCP.CRLF || p_mensagem)); ao invés de utilizar UTL_SMTP.WRITE_DATA(v_mail_conn, UTL_TCP.CRLF || p_mensagem);

Segue os links que utilizei.

Como resolver problema de acentuação usando utl_smtp?
http://glufke.net/oracle/viewtopic.php?t=4670

Email From Oracle PL/SQL (UTL_SMTP)
http://www.oracle-base.com/articles/misc/email-from-oracle-plsql.php

RES: [oracle_br] Enviar e-mail pelo Oracle com Con teúdo HTML
http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/msg16433.html




Fiquem na Paz!!!!

segunda-feira, abril 01, 2013

Procedure com query dinâmica para excluir um registro no MySQL

HI,

Estou fazendo um site usando Asp.Net com MySQL, e cada tabela tem a sua classe no sistema, e em cada classe tem o método Manutenção para inserir/atualizar e o método Excluir. Só que o excluir é repetitivo em cada classe: delete from tabela where campo = 1, por exemplo. A única coisa que muda é a tabela e o campo. Então pensei em fazer uma procedure genérica onde eu passasse como parâmetro o nome da tabela , o campo da condição e o código do registro a ser excluído. No Oracle eu já sabia que tem com montar uma query pra ser execeutada.

Achei a dica aqui

How To have Dynamic SQL in MySQL Stored Procedure
http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure


Minha procedure ficou assim:


CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_excluir_registro`(IN `_NOMETABELA` VARCHAR(50), IN `_CAMPO` VARCHAR(50), IN `_VALOR` VARCHAR(50))
BEGIN
SET @s = CONCAT('DELETE FROM ',_NOMETABELA, ' WHERE ', _CAMPO, ' = ', _VALOR);
PREPARE stmt FROM @s;
EXECUTE stmt;
END




Fiquem na Paz!!!!

segunda-feira, abril 09, 2012

Obter o retorno de uma procedure do oracle através de parâmetro no C#

HI,

Estava precisando obter a matrícula de um usuário que foi criado no banco de dados, para exibir em um dialogo no navegador.

Já sabia como receber o resultado de uma query para exibir em um grid, por exemplo, utilizando procedure, mas obter apenas um valor, ainda não.

Achei essa dica aqui sobre o assunto

Getting values back from Oracle Procedures in C# .Net
http://csharpdeveloper.wordpress.com/2009/01/14/getting-values-back-from-oracle-procedures-in-c-net/

Nessa dica também tem como pegar o resultado de uma função do Oracle.


Fiquem na Paz!!!

segunda-feira, fevereiro 27, 2012

Obter o valor da sequence gerada ao inserir um registro no oracle.

HI,

Acabei de aprender isso e já estou disponibilizando aqui.

Situação:

Criei uma procedure para chamar duas outras procedures. Uma cria o registro Pai e a outra o registro Filho.

Eu tinha que passar o código do registro Pai para a procedure dois.

Antes tinha resolvido isso armazenando o valor da sequence em uma variável e depois passava para as duas procedures, ficando assim:


create or replace procedure INSERIR_MSG_USUARIO(pusr_id    number,
                            ptitulo   varchar2, pmensagem   varchar2, pcod_sistema     number)
is
        seq number := 0;
begin
        select cam_nrid.nextval into seq from dual;
   
        inserir_campanha('MENSAGEM AUTOMÁTICA AO USUÁRIO',
                         ptitulo, pmensagem, pcod_sistema, seq);
                            
        inserir_registro_envio(seq, pusr_id, sysdate);    
end;

Essa procedure é só para exemplificar.

Pesquisando no google achei como obter o código da sequence na clausula INSERT, e retornar o seu valor através de um parâmetro do tipo OUT.

Obtendo o valor da Sequence

Retornado um valor através da procedure


Usando o returning não precisei mais dessa linha: select cam_nrid.nextval into seq from dual;

Espero que possa ser útil.

Fiquem na Paz!!!