简体   繁体   中英

In SQL Server, how do I create a reference variable to a table?

I'm currently using sp_executesql to execute a T-SQL statement with a dynamic table name. However, it is really ugly to see something like:

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

What I would rather like to have is a TABLE variable of which is a reference to a table, so I could do for example:

UPDATE TableRef SET ... WHERE ...

Because when I have really long T-SQL statements it gets really hard to read due to the format of it within a string.

Any suggestions would be helpful.

Why don't you pass the parameters to sp_executeSQL instead?

http://msdn.microsoft.com/en-us/library/ms188001.aspx

I'd also have a read of this article too http://www.sommarskog.se/dynamic_sql.html

You can't. If you want to use a dynamic table name in your SQL, you have to concatenate it into your string.

If you have a lot of references to the table name within your query, you can shorten it by aliasing the table name, and for all other instances, use the alias.

eg

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

Just be very very careful when using dynamic SQL like this. Make sure you guard yourself against SQL injection.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM