Solicito de su colaboracion para que por favor me ayude a implementar el siguiente procedimiento almacenado.
1. Necesito poder ejecutar la funcion SPLIT para poder INSERTAR los datos en una tabla temporal.
2. El campo al cual necesito pasarle la funcion SPLIT es *idValoresCriterio, *este campo contiene valores de la siguiente forma: *123;200;500;*. Notese que estan separados por punto y coma (;). Es decir necesito separar cada uno de esos valores e insertarlos de foRma individual en una tabla temporal sin el punto y coma (;).
*idRegla idUla tabla IdvaloresCriterio*
22 8 Usuarios 150;
24 9 TiposCaso 2;3;
25 9 Usuarios 177;186;188;
26 10 Sitios 127;
27 10 Usuarios 193;234;
28 9 Sitios 101;
29 11 TiposCaso 3;
30 11 Usuarios 211;
31 12 TiposCaso 3;
32 7 Usuarios 136;151;
33 14 TiposCaso 2;
34 15 TiposCaso 2;
35 7 Sitios 103;
*Los datos que se inserten en la tabla temporal deben quedar asi:
** idRegla idUla tabla IdvaloresCriterio*
22 8 Usuarios 150
24 9 TiposCaso 2
24 9 TiposCaso 3
25 9 Usuarios 177
25 9 Usuarios 186
25 9 Usuarios 188
26 10 Sitios 127
27 10 Usuarios 193
27 10 Usuarios 234
28 9 Sitios 101
29 11 TiposCaso 3
30 11 Usuarios 211
31 12 TiposCaso 3
32 7 Usuarios 136
32 7 Usuarios 151
33 14 TiposCaso 2
34 15 TiposCaso 2
35 7 Sitios 103
*
*
/****** Object: StoredProcedure [dbo].[sp_reglas_ula] Script Date: 09/29/2009 14:14:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_reglas_ula]
@mensaje varchar(100) = null OUTPUT
AS
BEGIN
--Declarar variables
DECLARE @idULA AS INT
DECLARE @Ula AS VARCHAR(50)
DECLARE @Operador AS CHAR(3)
DECLARE @TAtencion AS INT
DECLARE @TSolucion AS INT
DECLARE @EstadoUla AS CHAR(10)
DECLARE @idRegla AS INT
DECLARE @Tabla AS VARCHAR(50)
DECLARE @idValoresCriterio AS NVARCHAR(50)
DECLARE @idEscaladoULA AS INT
DECLARE @NivelEscalado AS INT
DECLARE @CondicionEscalado AS CHAR(10)
DECLARE @Tiempo AS INT
DECLARE @EscalarA AS VARCHAR(50)
DECLARE @IdProyecto AS INT
DECLARE @Proyecto AS VARCHAR(80)
DECLARE @EstadoProyecto AS CHAR(10)
DECLARE @Compania AS VARCHAR(100)
DECLARE @EstadoCompania AS CHAR(10)
--Tabla temporal @TMP_REGLAS_ULA
DECLARE @TMP_REGLAS_ULA TABLE
(
--Campos que tendra la tabla @TMP_REGLAS_ULA
idULA INT,
Ula VARCHAR(50),
Operador CHAR(3),
TAtencion INT,
TSolucion INT,
EstadoUla CHAR(10),
idRegla INT,
Tabla VARCHAR(50),
idValoresCriterio nVARCHAR(50),
idEscaladoULA INT,
NivelEscalado INT,
CondicionEscalado CHAR(10),
Tiempo INT,
EscalarA VARCHAR(50),
IdProyecto INT,
Proyecto VARCHAR(80),
EstadoProyecto CHAR(10),
Compania VARCHAR(100),
EstadoCompania CHAR(10)
)
--INSERTAR EN LA TABLA TEMPORAL @TMP_REGLAS_ULA
INSERT INTO @TMP_REGLAS_ULA
(
--Campos de la tabla ULAS
idULA,
ULA,
Operador,
TAtencion,
TSolucion,
EstadoUla,
--Campos de la tabla REGLASULA
idRegla,
Tabla,
idValoresCriterio, ---
--Campos de la ESCALADOSULA
idEscaladoULA,
NivelEscalado,
CondicionEscalado,
Tiempo,
EscalarA,
--Campos de la tabla PROYECTOS
IdProyecto,
Proyecto,
EstadoProyecto,
--Campos de la tabla COMPANIAS
Compania,
EstadoCompania
)
--Seleccion de los campos
SELECT --Campos de la tabla ULAS
idULA,
ULA,
Operador,
TAtencion,
TSolucion,
EstadoUla,
--Campos de la tabla REGLASULA
idRegla,
Tabla,
idValoresCriterio, --ESTE CAMPO NECESITA LA FUNCION SPLIT
--Campos de la tabla ESCALADOSULA
idEscaladoULA,
NivelEscalado,
CondicionEscalado,
Tiempo,
EscalarA,
--Campos de la tabla PROYECTOS
IdProyecto,
Proyecto,
EstadoProyecto,
--Campos de la tabla COMPANIAS
Compania,
EstadoCompania
FROM V_Ulas_Reglas --Esto es una vista
--Declarar cursor de la tabla temporal
DECLARE CursorTablaTemp CURSOR FOR
SELECT --Campos de la tabla ULAS
idULA,
ULA,
Operador,
TAtencion,
TSolucion,
EstadoUla,
--Campos de la tabla REGLASULA
idRegla,
Tabla,
idValoresCriterio,
--Campos de la tabla ESCALADOSULA
idEscaladoULA,
NivelEscalado,
CondicionEscalado,
Tiempo,
EscalarA,
--Campos de la tabla PROYECTOS
idproyecto,
Proyecto,
EstadoProyecto,
--Campos de la tabla COMPANIAS
Compania,
EstadoCompania
FROM @TMP_REGLAS_ULA
set @mensaje = 'Selecciona valores en tabla @TMP_REGLAS_ULA'
print @mensaje;
--Abrir cursor
OPEN CursorTablaTemp
BEGIN
SELECT *
FROM @TMP_REGLAS_ULA
END
--Cerrar cursor
CLOSE CursorTablaTemp
DEALLOCATE CursorTablaTemp
END