Parámetros opcionales en procedimientos almacenados, SQL 2000 y 05

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 ejemplo ;) y 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,…)

Anuncios

2 comentarios to “Parámetros opcionales en procedimientos almacenados, SQL 2000 y 05”

  1. Edward Ocando Says:

    Al final del codigo:
    OR (@IDCliente = 0)
    No es necesario, porque de no pasar parametro ya se asigna un valor = 0

    Saludos.

  2. tenerifedotnet Says:

    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!!!.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: