![]() |
tabla como variable 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 |
Respuesta: tabla como variable Tu problema es de conflicto de collation (metodo de intercalacion de sql). Una solucion es agregar el collation en la tabla temporal que estas utilizando, tomando el mismo que tiene tu tabla fisica a la que le estas haciendo el select, en este caso creo que es losdepartamentos el campo eltrabajador. Para ver el collation de un campo solo ejecuta el siguiente comando sobre la tabla en cuestion, en la lista de campos al final viene una columna con el collation correspondiente. Ese mismo es el que debes manejar en la comparacion o en la definicion del campo de tu tabla temporal... Código: sp_help 'losdepartamentos'Código: -------------------------------------------------- |
Respuesta: tabla como variable Perfecto. Gracias Saludos |
| La zona horaria es GMT -6. Ahora son las 18:10. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.