Hola, tengo el siguiente problema:
Estoy creando queries y los ejecuto con la sentencia EXEC en un Stored procedure, por ejemplo:
SET @SQL = 'SELECT departamento FROM losdepartamentos
WHERE eltrabajador = '''+@trabajador+''''
EXEC (@SQL)
Ahora, el problema es que puede ser más de un trabajador y en mi stored, yo estoy recibiendo una cadena que es la subconsulta que trae los trabajadores que se necesitan. Por default, recibo esta cadena y no hay forma de cambiarlo.
Supongamos:
@subconsulta = 'SELECT DISTINCT ELtrabajador FROM todoslostrabajadores'
Entonces mi query quedaría:
SET @SQL = 'SELECT departamento FROM losdepartamentos
WHERE eltrabajador IN ('''+@subconsulta+''')'
EXEC (@SQL)
el problema es que mi query es bastante extenso y la subconsulta también. Entonces una solución sería crear otro query para insertar la subconsulta en una tabla temporal
CREATE TABLE tablatemporal (trabajador char(6))
SET @InserSubConsulta = 'INSERT INTO tablatemporal '+@subconsulta
EXEC @InserSubConsulta
SET @SQL = 'SELECT departamento FROM losdepartamentos
WHERE eltrabajador IN (SELECT trabajador FROM tablatemporal)'
EXEC (@SQL)
Esto ta güeno, pero a mi me gustaría no utilizar una tabla, sino una tabla temporal, es decir #tablatemporal que se eliminaría automáticamente acabando el Stored
CREATE TABLE #tablatemporal (eltrabajador char(6))
.
.
.
pero cuando ejecuto el Stored me regresa el error:
Cannot resolve the collation conflict between "Latin1_General_CI_AI" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation
tons, estaba pensando en declara una variable de tabla es decir:
DECALRE @tablatemporal TABLE (eltrabajador char(6))
.
.
.
Pero me aparece el error
Must declare the table variable "@tabletemporal".
¿¿¿¿¿Alguien tiene alguna sugerencia????
Gracias de antemano.
Saludos a todos y todas