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!!!!
Mostrando postagens com marcador procedure. Mostrar todas as postagens
Mostrando postagens com marcador procedure. Mostrar todas as postagens
quinta-feira, julho 11, 2013
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!!!!
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!!!
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;
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!!!
Assinar:
Postagens (Atom)