viernes, 1 de febrero de 2019

Cursores Implicitos Oracle

Los cursores no son mi herramienta favorita pero por alguna razón que no tengo muy clara la realidad es que en el mundo de Oracle es una de las formas más comunes de hacer las cosas .. Cursor para esto, cursor para aquello, todo se puede resolver con cursores y la verdad es que he de reconocer que tienen un gran poder sin embargo prefiero prescindir de ellos en la medida de lo posible.

Pero para aquellos casos en los que no hay más opciones o la manera rápida de hacerlo es mediante un cursos aqui les dejo la forma que considero más sencilla de trabajar con cursores son los cursores implicitos. Aqui dejo un ejemplo de como se pueden usar 



BEGIN
    FOR  REGISTRO IN  (SELECT CAMPO1, CAMPO2
                                   FROM   Tabla1                 T1
                                              Inner join Tabla2  T2 On T1.A = T2.B
                                         )
     LOOP
          DBMS_OUTPUT.put_line(registro.campo1);     
    END LOOP;        

END; 


En esta entrada comparto un script para poder enviar correos desde Power Shel es importante señalar que antes de poder realizar el envío desde cuentas de gmail u outlook es necesario habilitar el envío de Aquí puedes encontrar un manual de como hacerlo.

$EmailFrom = "pruebas@gmail.com"
$EmailPass = "1234"
$EmailTo = "pruebas@gmail.com"
$Subject = "Prueba de correo PowerShel"
$Body = "Cuertpo del correo"
$SMTPServer = "smtp.gmail.com"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($EmailFrom, $EmailPass)
$SMTPCliente.EnableSsl = $true;
$SMTPClient.send($SMTPMessage)



Es posible que el antivirus bloquee el envío de correos en esta caso podrías recibir un error similar al siguiente:





Si este es el caso revisa

Para enviar el mismo correo varias veces puedes sustituir la ultima linea por estas tres lineas:

for($i=0; $i -lt 3; $i++)
{
   $SMTPClient.send($SMTPMessage)
}