Archivo para 29 octubre 2009

29
Oct
09

El Pajarito y El Gato, Estracto de “Asesinos”

Habia una vez un pajarito que iba volando hacia el sur en medio de una tormenta, pero el viento soplaba tan fuerte  y hacía tanto frío que el pajarito ya no pudo volar mas y cayó al suelo….

Cuando el pajarito estaba casi congelado pasó una vaca y lo cagó, pero la mierda estaba fresca y ayudó al pajarito a calentarse y sentirse mejor…

Una vez calientito, el pajarito se puso a cantar, en ese momento pasaba un gato que lo escuchó; el gato se acercó, miró al pajarito, apartó la mierda con su pata y se lo comió…..

La moraleja del cuento es que: “No todo el que se caga en vos es tu enemigo, y no todo el que te saca de la mierda es tu amigo”, “Y si estas felíz y calientito, mejor quedate calladito”

Saludos…

09
Oct
09

Transact Sql Básico – Stored Procedures (SP)

Bueno, dando continuidad al Transact Sql, me gustaría comentar sobre otro importante tema como son los Stored Procedures o Procedimientos almacenados.

Un procedimiento almacenado es un bloque de código de que se ejecuta dentro del motor de la base de datos con el fin de realizar tareas dentro de la misma base y en consecuencia, evitar que el usuario tenga que ver con dichas tareas; Esto se puede aplicar tanto a procesos delicados como la actualización o modificación de muchos registros a la vez, y también a procesos sencillos como un select o un delete, la diversidad puede ser muy extensa ya que son herramientas muy potentes del motor de base de datos.

Quizá la función mas importante y el mayor beneficio que podemos sacar de los SP es que se puede limitar o incluso evitar que el usuario tenga acceso directo a las tablas de nuestra base de datos, haciendo que las tareas de consulta las realicen los SP mediante parametros que podamos pasarles

Veamos como hacer un sencillo SP desde el Analizador de Consultas de nuestro SQL Server…

Create Procedure SP_EliminarEstudiante @PId_Estudiante varchar(20) As
Delete From Estudiantes
Where Id_Estudiante = @PId_Estudiante
go

Explico el código:

Create es la palabra reservada en Sql para crear un nuevo elemento, una base, una tabla, un SP, etc.

Con Procedure le decimos que lo que estamos creando es un Procedimiento Almacenado

lo siguiente es escribir el nombre de nuestro procedimiento: SP_EliminarEstudiante, (Por lo del SP_  he de recordar la entrada sobre Nomenclaruta Hungara, para no confundirnos)

Al SP le pasaremos un parámetro, el numero de la cuenta que eliminaremos, los parametos para los SP se declaran con @P, seguidos por el nombre del parámetro y su tipo de dato: @PId_Estudiante VarChar (20) si pasaremos más de un parámetro los separaremos por comas…

Al final colocamos la palabra AS

Después de esto, colocamos las instrucciones que queremos que nuestro SP ejecute cuando sea llamado…

Delete From Estudiantes
Where Estudiante = @PId_Estudiante

(Ojo, que aqui es donde utilizamos los parámetros que llamamos)

y al final, colocamos la célebre palabra Go.

Esto es básicamente un SP, ejecutando lo que le queramos y lo único que hay que hacer es llamarlo por una sencilla linea en nuestro Analizador de Consultas:

SP_EliminarEstudiante ‘CFPDM01’

(el nombre de nuestro SP y los parámetros que le hayamos declarado)…

Cabe mencionar que el poder del SP reside en el alto grado de complejidad que puede adoptar, ya que es capaz de controlar estructuras de manejo de flujo de datos, IF THEN ELSE, entre otros: Aqui pongo un ejemplo de un SP mas complejo:
Create Procedure SP_ObtenerEstudiante @PId_Estudiante varchar(50), @PFull int As
If
@PId_Estudiante is null and @PFull = 0
Select Id_Estudiante, Nombres, Apellidos
From Estudiantes
Order By Id_Estudiante
else if
@PId_Estudiante is not null and @PFull = 0
Select Id_Estudiante, Nombres, Apellidos
From Estudiantes
Where IdEstudiante =
@PId_Estudiante
Order By Id_Estudiante
else if
@PId_Estudiante is null and @PFull = 1
Select *
From Estudiantes
Order By Id_Estudiante
else if
@PId_Estudiante is not null and @PFull = 1
Select *
From Estudiantes
Where Id_Estudiante = @PId_Estudiante
Order By Id_Estudiante
Go

El procedimiento anterior lleva a cabo una seleccion de los posiles valores de los dos parametros requeridos, evaluando cada caso y dando una cadena de consulta distinta para cada uno…

Nota Importante: Cuando se asignan parámetros a los SP, es posible evaluar no solo los valores que contienen, sino también, si contienen o no valores; Tal es el caso del procedimiento anterior que verifica si el parámetro @PId_Estudiante es nulo o no. Por lo que las posibilidades con los SP que se nos vengan en mente son ilimitadas…

Saludos…