sexta-feira, 15 de dezembro de 2017

sexta-feira, 25 de novembro de 2016

Script de sorteio de duendes

declare
 
conn UTL_SMTP.connection;

L_retorno varchar2(2000);





type t_duende is record (

Nome varchar2(2000),

email varchar2(2000)

);





type tt_duende is table of t_duende index by binary_integer;





g_duendes tt_duende;

g_duendes_ocupados tt_duende;

L_duende t_duende;

L_idx1 Number;

L_idx2 Number;

L_contador number;





begin



---------------------------------------------------------

L_duende.nome := 'gentleman';

L_duende.email := 'gentleman@gmail.com';

g_duendes(NVL(g_duendes.last,0)+1) := L_duende;

---------------------------------------------------------

L_duende.nome := 'lady';

L_duende.email := 'lady@gmail.com';

g_duendes(NVL(g_duendes.last,0)+1) := L_duende;

---------------------------------------------------------

---------------------------------------------------------

/*if mod(g_duendes.count, 2) != 0 Then





raise_application_error(-20749, 'O numero de participantes não é par!');

End if;*/



L_contador := G_duendes.first;

While L_contador is not null

Loop

-- indice 1

L_idx1 := L_contador;

-- indice 2

Loop

L_idx2 := round(dbms_random.value(1,g_duendes.count));

while g_duendes_ocupados.exists(L_idx2)

Loop

L_idx2 := G_duendes.next(L_idx2);

if L_idx2 is null then

L_idx2 := G_duendes.first;

end if;

end loop;

---------------------------------------

Exit when L_idx1 != L_idx2

AND not g_duendes_ocupados.exists(L_idx2)

;

end loop;





g_duendes_ocupados(L_idx2) := g_duendes(L_idx1);







conn :=

###########.begin_mail (

sender => 'PaiNatal@glintt.com',

recipients => G_duendes(L_idx1).email,

cc => '',

subject => 'Duende ajudante do SGICM',

priority => 1,

mime_type => ###########.multipart_mime_type);

###########.begin_attachment (conn => conn,

mime_type => 'text/html',

inline => FALSE,

filename => NULL,

transfer_enc => NULL);

###########.write_mb_text (conn => conn,

MESSAGE =>




'O teu amigo secreto para o jantar de natal do SGICM é


"'||g_duendes(L_idx2).nome||'".




O valor da prenda deve rondar os 5 euros.

A prenda deve vir identificada com o nome da pessoa para o qual se destina para o Pai Natal na se enganar que o coitadinho está velhinho.

Por questões de burocracia e secretismo preciso que confirmem a recepção deste email sem reenviarem o amigo secreto para gloriagoncalves@glintt.com

Um feliz natal e bom jantar SGICM

"O script de geração sorteio pode ser consultado em http://odesenvolvimento.blogspot.pt/"


');

###########.end_attachment (conn => conn, LAST => FALSE);

L_retorno := ###########.end_mail (conn => conn);

----------------------------------------------------

L_contador := G_duendes.next(L_contador);

end loop;

end;