日期:2014-05-18  浏览次数:20405 次

SQL 定义table变量的问题
我有一系列的这样表 table1,table2,table3,table4.....
在执行一个函数的时候会传个参数,这个参数决定要执行哪个表
在函数中:
declare @num int
declare @tablename table(fld_id int)
set @tablename=?
select * from @tablename
我想把这个@tablename 赋值,随着传来的@num的不同,而使用不同的表(table1,table2,table3....)
请问:这个@tablename怎么赋值了?


------解决方案--------------------
拼接成字符串
然后用exec 执行
------解决方案--------------------
用EXECUTE sp_executesql 方法,具体参考帮助文档
------解决方案--------------------

declare @num int

if @num =0
 set @tableName = 'table1'
else
 set @tableName = 'table2'

declare @sql nvarchar(500)

set @sql = 'select * from ' + @tableName

execsql(@sql)
------解决方案--------------------
declare @num int
declare @tablename table(fld_id int)
set @tablename='aa'
EXEC('select * from '+@tablename )