Anexsoft | Blog y dictado de cursos de Tecnología

En este encontrarás tutoriales de tecnología como PHP, ASP.NET MVC, Front-End, entre otros y cursos exigentes de modalidad online que te ayudarán a crecer profesionalmente.

Queremos mejorar la calidad de nuestros cursos. Por favor ayúdanos llenando esta pequeña encuesta
Pasando un array a un storeprocedure (SQLServer)
Actualizado el 03 Noviembre, 2014 y leído 2,653 veces
Calificación: 10.00 / 10

Pasando un array a un storeprocedure (SQLServer)

Anexsoft

Ahora queremos usar un WHERE IN en nuestro storeprocedure y para eso debemos pasarle las posibles condiciones la cual supongamos podría ser A,B,C.

El problema esta que en SQLServer no podemos pasar un array, entonces la solución es pasar una cadena separado por comas.

Ejem: 'A,B,C'

Y creamos la siguiente función, la cual yo no la hice la baje hace tiempo de una página que ni recuerdo:

CREATE FUNCTION [dbo].[FN_SPLIT_STRING] 
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1

INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)

END
RETURN
END

Esta función recibe 2 parametros, primero la cadena a partir y luego delimitador la cual nos devolvera una tabla temporal.

Teniendo esto que hacemos ahora, pues creamos nuestro storeprocedure y le pasamos el parametro a filtrar como una cadena separado por comas.

Supongamos que queremos traer a los usuarios que pertenescan al grupo A, B, C.

CREATE PROCEDURE USP_USUARIOS_POR_GRUPOS
@GRUPO NVARCHAR(MAX)
AS
BEGIN
-- TABLA TEMPORALES
DECLARE @TABLA_GRUPOS TABLE(
id NVARCHAR(MAX)
); INSERT INTO @TABLA_GRUPOS SELECT * FROM dbo.FN_SPLIT_STRING(@GRUPO, ',');

SELECT * FROM Empleados WHERE Grupo IN (SELECT * FROM @TABLA_GRUPOS)
END

Genial, ¿y ahora que hace falta?. Pues llamar al procedure de la siguiente manera:

USP_USUARIOS_POR_GRUPOS 'A,B,C'

Cualquier duda, queja, insulto o lo que sea deja tu comentario y te respondere a tu querida bandeja.

¡Adquiera ya!

  • Código de fuente de Red Social desarrollada en ASP.NET MVC

    Código de fuente de Red Social desarrollada en ASP.NET MVC
  • Software de Venta e Inventario hecho en PHP y Codeigniter

    Software de Venta e Inventario hecho en PHP y Codeigniter
  • Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#

    Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#

Últimas publicaciones

Encuesta

¿Sobre qué te gustaría que se hable más?

Síguenos

Estudia con nosotros y crece profesionalmente

Nuestros cursos han sido hecho en base a lo que demanda el mercado hoy en día.
La experiencia obtenida es la de un ambiente laboral.

Anexsoft
© 2018 Anexsoft, blog y cursos online de TI.