Buenas noches a todos
Muchas veces usamos parametros opcionales en nuestras funciones o procedimientos de Visual Basic, y como sabemos es bastante sencillo, pues debemos saber que es practicamente igual de sencillo usarlo en nuestros procedimientos almacenados de SQL
Pasemos a la práctica:
Imaginaos que tenemos un procedimiento almacenado que lee clientes de nuestra base de datos:
CREATE PROCEDURE LeeClientes AS SELECT IDCliente, RazonSocial FROM MyProgram_Clientes --EXEC LeeCLientes Devuelve todos los clientes de la base de datos Si por el motivo que sea, se alinean Marte y Júpiter con el Sol por ejemploy necesitamos que nuestro procedimiento en un momento dado, no solo lea clientes sino que se capaz de filtrar por el identificador del cliente, tenemos dos opciones, añadir el parámetro @IDCliente y cambiar todas nuestras llamadas desde nuestro código añadiendo el nuevo parámetro o crear un nuevo procedimiento almacenado que se llame LeeCliente y cambiar las llamadas del código donde necesitemos; O (si ya se que dije dos opciones pero ahí esta la gracia) añadir el parámetro como un parámetro opcional de nuestro procedimiento, lo que es tan sencillo como:
CREATE PROCEDURE LeeClientes @IDCliente AS int = 0 --Igualando el parámetro a un valor inicial conseguimos que el parámetro se convierta en opcional AS SELECT IDCliente, RazonSocial FROM MyProgram_Clientes WHERE (MyProgram_Clientes.IDCliente = @IDCliente) OR (@IDCliente = 0) --EXEC LeeCLientes Devuelve todos los clientes de la base de datos --EXEC LeeCLientes @IDCliente Devuelve el cliente indicado en el parámtreo @IDCliente
Como veis es bastante sencillo y bastante útil o espero que así os haya sido
NOTA: Como no todo puede ser color de rosa, la única pega a esto es que si estamos accediendo desde nuestro programa al SQL mediante OLEBDB no podremos usar esta característica del SQL, necesitaremos otro proveedor de base de datos (SQLClient, SQL Native Client,…)
Advertisement
21 febrero 2009 a las 4:45 pm
Al final del codigo:
OR (@IDCliente = 0)
No es necesario, porque de no pasar parametro ya se asigna un valor = 0
Saludos.
21 febrero 2009 a las 10:56 pm
Hola Edward, este trozo de código se usa para que, en caso de que le asignes 0 a @IDCliente o se lo asigne por defecto, no busque registros que coincidan con 0, pues es posible que no los haya, es una forma de decirle que no filtre por IDCliente.
Saludos y gracias por leer nuestro Blog!! el tuyo es el primer comentario!!!.