2010-06-18 13 views
6

Actualmente estoy usando sp_executesql para ejecutar una instrucción T-SQL con un nombre de tabla dinámica. Sin embargo, es muy feo ver algo como:En SQL Server, ¿cómo creo una variable de referencia para una tabla?

set @sql = 'UPDATE '+Table_Name+' SET ... WHERE '+someVar+' = ... AND '+someVar2' = ...' 
sp_executesql @sql 

Lo que yo prefiero gustaría tener es una variable de tabla de que es una referencia a una tabla, por lo que podría hacer por ejemplo:

UPDATE TableRef SET ... WHERE ... 

Porque cuando tengo sentencias T-SQL realmente largas, es muy difícil de leer debido al formato de una cadena.

Cualquier sugerencia sería útil.

+0

por cierto, no 'SET sql = ...' pero 'SET @sql = ...' – abatishchev

+0

Sí, gracias por las correcciones. Seguí recibiendo blockquote cuando presioné @. No sabía que podía hacerlo así. Gracias. –

+0

ón: el producto se llama "SQL Server", no "MSSQL". –

Respuesta

0

No se puede. Si desea utilizar un nombre de tabla dinámica en su SQL, debe concatenarlo en su cadena.

Si tiene muchas referencias al nombre de la tabla dentro de su consulta, puede acortarlo aludiendo el nombre de la tabla, y para todas las demás instancias, use el alias.

p. Ej.

SET @SQL = 'UPDATE t SET.... FROM ' + @TableName + ' t WHERE ....' 

Solo tenga mucho cuidado al usar SQL dinámico como este. Asegúrese de protegerse contra la inyección de SQL.

Cuestiones relacionadas