trabaje un buen tiempo interactuando con un sistema en DB2 desde mi sistema en SQL Server, jejeje
seria algo mas o menos asi...
ya solo tendrias que ajustar detalles de sintaxis que pudieran generarse..
Código:
DECLARE @CONTENEDORAS VARCHAR(8000), @sqlQuery varchar(8000)
SET @CONTENEDORAS = ''
Set @sqlQuery = ''
SELECT @CONTENEDORAS = @CONTENEDORAS + '''' + CAST(ETIQUETACONTENEDORA AS CHAR(12)) + ''','
FROM REC_RECLAMOS
if len(@CONTENEDORAS) > 0
Set @CONTENEDORAS = SUBSTRING(@CONTENEDORAS, 1, len(@CONTENEDORAS)-1)
--- con un print hay que validar que esta variable sea una lista valida
--- de items varchar, algo como 'a','b','c'
-- Ademas hay que validar que la concanetacion no sobrepase los 8000 caracteres
-- sino quedara trunca y hara que truene el execute
Set @sqlQuery = @sqlQuery + ' SELECT * FROM OPENQUERY(CURRENTWMS, '
Set @sqlQuery = @sqlQuery + ' ''SELECT BPD_WFNAME AS [USUARIO], '
Set @sqlQuery = @sqlQuery + ' BCH_NROCNT AS [CONTENEDORA], '
Set @sqlQuery = @sqlQuery + ' BCH_CODLOC AS [LOCAL], '
Set @sqlQuery = @sqlQuery + ' BPD_WFCASE AS [CAJAS], '
Set @sqlQuery = @sqlQuery + ' BCH_FECENT AS [FECHA] '
Set @sqlQuery = @sqlQuery + ' FROM FILELIB.BWPRDDIA T1 INNER JOIN FILELIB.BWCNTH01 T2 '
Set @sqlQuery = @sqlQuery + ' ON BPD_NROASI=BCH_NROASG AND BPD_WFASID=DIGITS(DECIMAL(BCH_CODLOC, 5, 0)) '
Set @sqlQuery = @sqlQuery + ' AND T1.CODFAC=T2.CODFAC AND T1.CODWHS=T2.CODWHS AND T1.WFACTD+19000000=T2.FECCRE '
Set @sqlQuery = @sqlQuery + ' AND DIGITS(BCH_NROCNT) IN ( '
-- Para evitar que se sobrepasen los 8000 caracteres en sqlquery no concatenaremos contenedoras
-- se ejecuta directo
print @sqlQuery + @CONTENEDORAS + ') '') '
-- igual, primero imprime la cadena y ajusta lo necesario para que esa cadena impresa se pueda
-- ejecutar sin problemas de sintaxis desde el query analizer..y ya despues agregas el execute...
Execute (@sqlQuery + @CONTENEDORAS + ') '') ' )
Saludos! espero te sirva...