Un ejemplo de un cursor con SQL Dinamico que muchas veces es nuestra ultima alternativa a una solucion , pero nos ayuda a resolver problemas a nivel de base de datos
CREATE PROCEDURE CURSORDINAMICO -- 1,'001,003,004,006,005,002,007,007'
@FirstParamters NUMERIC(2),
@StringValues VARCHAR(MAX)
as
-- Declaración del cursor
declare @Valor1 VARCHAR(MAX) = ''
declare @Valor2 VARCHAR(MAX) = ''
declare @Resultado VARCHAR(MAX)= ''
declare @Contador numeric = 0
DECLARE CursorSplit CURSOR
FOR
select * from dbo.split(@StringValues,',')
-- Open Cursor
OPEN CursorSplit
--Reading First row
FETCH CursorSplit INTO @Valor1 , @Valor2
WHILE (@@FETCH_STATUS = 0)
BEGIN
--Reading Second row
if(@Valor2 != '')
begin
if(@Contador = 0)
begin
set @Resultado = CHAR(39) + ' and XXX LIKE ' + CHAR(39) + '%' + @Valor2 + '%' + CHAR(39)
end
else
begin
set @Resultado =@Resultado + ' or XXX LIKE ' + CHAR(39) + '%' + @Valor2 + '%' + CHAR(39)
end
set @Contador = @Contador+1
end
FETCH CursorSplit INTO @Valor1 , @Valor2
END -- end loop while
CLOSE CursorSplit
DEALLOCATE CursorSplit
DECLARE @TSQL VARCHAR(MAX)
SET @TSQL = ' SELECT XXX,XXX,XXX
FROM XXX
where XXX LIKE ''%' +RTRIM(CONVERT(CHAR(2),@FirstParameter)) + '%' + @Resultado
--SELECT @TSQL AS TSQL
EXEC (@TSQL )
go
No hay comentarios:
Publicar un comentario