Pues este es nuestro primer post referente a SQLServer...
Veamos un video con una propuesta diferente de resolución de este requerimiento:
Creación de la Base de Datos
Creación de Tabla de Clientes e Insersión de Registros de Prueba
Con este query puedes crear la tabla de clientes e insertar los registros de prueba
Creación del Stored Procedure
Pruebas y Resultados
Resultados Ejemplo 1
Resultados Ejemplo 2
Resultados Ejemplo 3
Resultados Ejemplo 4
Resultados Ejemplo 5
Resultados Ejemplo 6
Resultados Ejemplo 7
Descarga de Código Fuente
En esta ocasión pondremos a tu disposición un backup de la base de datos creada en SQLServer Express 2014 que puedes descargar haciendo clic aquí: BlogspotTesting.bak
Puedes descargar SQL Server Express 2014 desde esta liga [SQLExpress2014] para que realices el restore de la base de datos.
No olvides seleccionar las opciones:
Saludos!
En primera instancia les queremos platicar qué es lo que buscamos:
Mediante un stored procedure obtener un listado ordenado por alguna de las columnas devueltas de manera ascendente o descendente, dependiendo de los parámetros de entrada del mismo.
Muchas de las ocasiones cuando nos ha tocado buscar información acerca de cómo hacer este proceso, solemos encontrar recomendaciones de hacerlo usando un query que se contruye en tiempo de ejecución usando una variable de tipo VARCHAR(MAX) y después hacer uso de la función EXEC para ejecutarlo.
Al final, se resuelve el problema, pero la intención es mejorar el procedimiento sin afectar el rendimiento y evitando problemas de seguridad como el SQL Injection.
Veamos un video con una propuesta diferente de resolución de este requerimiento:
Creación de la Base de Datos
Usando el siguiente query que pueden ejecutar en el cliente base de datos SQL Server crearemos la base de datos con la que trabajaremos:
CREATE DATABASE BlogspotTesting GO
Creación de Tabla de Clientes e Insersión de Registros de Prueba
Con este query puedes crear la tabla de clientes e insertar los registros de prueba
USE BlogspotTesting CREATE TABLE [dbo].[Clientes]( [clave] [int] IDENTITY(1,1) NOT NULL, [nombres] [varchar](50) NOT NULL, [apaterno] [varchar](50) NOT NULL, [amaterno] [varchar](50) NOT NULL, CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED ( [clave] ASC ) ) GO USE BlogspotTesting INSERT INTO Clientes (nombres, apaterno, amaterno) VALUES ('CARLOS', 'ESTRADA', 'IBARRA') GO USE BlogspotTesting INSERT INTO Clientes (nombres, apaterno, amaterno) VALUES ('OLGA', 'SOSA', 'YAÑEZ') GO USE BlogspotTesting INSERT INTO Clientes (nombres, apaterno, amaterno) VALUES ('GABRIEL', 'MENDEZ', 'PARDO') GO USE BlogspotTesting INSERT INTO Clientes (nombres, apaterno, amaterno) VALUES ('SANDRA', 'ZAPATA', 'CARMONA') GO USE BlogspotTesting INSERT INTO Clientes (nombres, apaterno, amaterno) VALUES ('HÉCTOR', 'LÓPEZ', 'TAVAREZ') GO USE BlogspotTesting INSERT INTO Clientes (nombres, apaterno, amaterno) VALUES ('BRENDA', 'FRANCO', 'JUÁREZ') GO
Creación del Stored Procedure
USE [BlogspotTesting] GO -- ====================================================== -- Author: Nivisix Soluciones -- Create date: Lunes 19 de Junio de 2017 -- Description: Obtiene la lista de clientes ordenados -- por la columna especificada de manera -- ascendente o descendente -- ====================================================== CREATE PROCEDURE [dbo].[uspObtenerClientes] @orderBy TINYINT = 1, @descendente BIT = 'False' AS BEGIN SET NOCOUNT ON; SELECT nombres, apaterno, amaterno FROM Clientes ORDER BY CASE WHEN @orderBy = 1 AND @descendente = 'False' THEN nombres END, CASE WHEN @orderBy = 1 AND @descendente = 'True' THEN nombres END DESC, CASE WHEN @orderBy = 2 AND @descendente = 'False' THEN apaterno END, CASE WHEN @orderBy = 2 AND @descendente = 'True' THEN apaterno END DESC, CASE WHEN @orderBy = 3 AND @descendente = 'False' THEN amaterno END, CASE WHEN @orderBy = 3 AND @descendente = 'True' THEN amaterno END DESC END GO
Pruebas y Resultados
USE BlogspotTesting GO -- Listado ordenado por nombres de manera ascendente uspObtenerClientes GO -- Listado ordenado por nombres de manera descendente uspObtenerClientes 1, 'True' GO -- Listado ordenado por apellido paterno de manera ascendente uspObtenerClientes 2 GO -- Listado ordenado por apellido paterno de manera descendente uspObtenerClientes 2, 'True' GO -- Listado ordenado por apellido materno de manera ascendente uspObtenerClientes 3, 'False' GO -- Listado ordenado por apellido materno de manera descendente uspObtenerClientes 3, 'True' GO -- Listado ordenado por otra columna no especificada de manera descendente -- Devuelve el listado por default (como fueron insertados) uspObtenerClientes 5, 'True' GO
Resultados Ejemplo 1
Resultados Ejemplo 2
Resultados Ejemplo 3
Resultados Ejemplo 5
Resultados Ejemplo 6
Resultados Ejemplo 7
Descarga de Código Fuente
En esta ocasión pondremos a tu disposición un backup de la base de datos creada en SQLServer Express 2014 que puedes descargar haciendo clic aquí: BlogspotTesting.bak
Puedes descargar SQL Server Express 2014 desde esta liga [SQLExpress2014] para que realices el restore de la base de datos.
No olvides seleccionar las opciones:
- SQLEXPRWT_x[86 ó 64]_ENU.exe
- SQLManagementStudio_x[86 ó 64]_ENU.exe
Saludos!
Comentarios
Publicar un comentario