Vamos ver agora como seria a criação de um procedimento armazenado que envia um e-mail para uma pessoa com um título e uma mensagem predefinidos. Iremos numerar as linhas abaixo apenas para explicar o que significa cada linha, essa numeração não existe na prática.

Clique sobre os números para ver a explicação.

  1. 1. CREATE PROCEDURE EnviaEmail (IN ID_Destinatario INTEGER, OUT Erro VARCHAR(100))
  2. 2. RETURNS BOOLEAN
  3. 3. BEGIN
  4. 4. DECLARE EnderecoEmail VARCHAR(100);
  5. 5. DECLARE TituloEmail VARCHAR(100);
  6. 6. DECLARE TextoEmail VARCHAR(4000);
  7. 7. DECLARE ConseguiuEnviar BOOLEAN;
  8. 8. SELECT “Olá, este é o título do e-mail” INTO TituloEmail;
  9. 9. SELECT “Este é o texto do e-mail. Bem-vindo ao mundo do SQL!” INTO TextoEmail;
  10. 10. SELECT Email INTO EnderecoEmail FROM Pessoa WHERE ID_Pessoa = ID_Destinatario;
  11. 11. IF EnderecoEmail IS NULL
  12. 12. THEN
    1. 12.1. SELECT “Esta pessoa não existe na base de dados” INTO Erro;
    2. 12.2. RETURN FALSE;
  13. 13. ELSEIF EnderecoEmail = “” THEN
    1. 13.1. SELECT “Esta pessoa não possui um e-mail cadastrado na base de dados” INTO Erro;
    2. 13.2. RETURN FALSE;
  14. 14. ELSE
    1. 14.1. Call SENDMAIL (EnderecoEmail, TituloEmail, TextoEmail, ConseguiuEnviar)
  15. 15. END IF;
  16. 16. IF NOT ConseguiuEnviar
    1. 16.1. THEN SELECT “Não foi possível enviar o e-mail” INTO Erro;
  17. 17. RETURN TRUE;
  18. 18. END;

Note que cada comando completo é encerrado por um sinal de ponto de vírgula. Alguns comandos são executados em uma única sequência, como comandos SELECT. Outros comandos, como cláusulas IF/THEN/ELSE possuem várias sequências, e apenas na instrução ENDIF é que deve aparecer o ponto e vírgula para encerrar a operação.

Copyright © 2014 AIEC.