CREATE PROCEDURE SP_COLUMNAS_TABLA
@TABLA VARCHAR(20)
AS
BEGIN
--CREAMOS UNA TABLA TEMPORAL EN LA CUAL ALMACENAREMOS LOS NOMBRES DE LAS COLUMNAS Y SU ALIAS POR CADA TABLA ELEJIDA
DECLARE @TABLA_COLUMNAS TABLE(COLUMNA varchar(50), DESCRIPCION varchar(50))
SET NOCOUNT ON
DECLARE @COLUMNA AS VARCHAR(50)
DECLARE @ARRAY_COL AS NVARCHAR(500)
DECLARE @DESCRIPCION AS VARCHAR(50)
DECLARE @ARRAY_DES AS NVARCHAR(500)
IF @TABLA='PERSONAS' BEGIN
SET @ARRAY_COL='COD_PERSONA,NOMBRE,FECHA_NACIMIENTO,' --NOMBRE DE LAS COLUMNAS EN LA TABLA1 QUE DESEAMOS FILTRAR EN LA BUSQUEDA, OVIAMENTE ESTA TABLA PODRIA TENER MAS COLUMNAS, SOLO SELECCIONAMOS LAS QUE QUEREMOS MOSTRAR
SET @ARRAY_DES='CODIGO,NOMBRE,FECHA DE NAC,' --ALIAS DE LAS COLUMNAS EN ORDEN CORRESPONDIENTE AL NOMBRE, DE ESTA FORMA SE DESCRIBIRAN AL MOMENTO DE MOSTRARLOS EN UN CONTROL DEL FORMULARIO
END
IF @TABLA='CIUDADES' BEGIN
SET @ARRAY_COL='
SET @ARRAY_DES='CODIGO,NOMBRE,'
END
--puedes elejir mas tablas incluso columnas de una consulta
IF @TABLA='CIUDAD_PERSONAS' BEGIN
SET @ARRAY_COL='CIUDADES.NOMBRE,PERSONAS.NOMBRE,'
SET @ARRAY_DES='CIUDAD,PERSONA,'
END
WHILE LEN(@ARRAY_COL)<>0
BEGIN
SET @COLUMNA =SUBSTRING(@ARRAY_COL,0, CHARINDEX(',',@ARRAY_COL))
SET @ARRAY_COL =SUBSTRING(@ARRAY_COL,CHARINDEX(',',@ARRAY_COL,0)+1,LEN(@ARRAY_COL))
SET @DESCRIPCION =SUBSTRING(@ARRAY_DES,0, CHARINDEX(',',@ARRAY_DES))
SET @ARRAY_DES =SUBSTRING(@ARRAY_DES,CHARINDEX(',',@ARRAY_DES,0)+1,LEN(@ARRAY_DES))
INSERT INTO @TABLA VALUES(@COLUMNA, @DESCRIPCION)
END
SELECT * FROM @TABLA_COLUMNAS
END