数据库:sql server2008
情况:表名不确定的情况下,拼接sql并执行,可以使用exec执行(注:执行的sql必须用()括起来)
代码1:(有添加括号,成功)
--动态查表名,并查找该表数据
begin
declare @tabName varchar(50)
declare @sql varchar(500)
set @tabName = ('FORM_' + convert(nvarchar,(select fc.formId from FormCustom_ fc)))
set @sql = 'select * from ' + quotename(@tabName)
exec (@sql)
end
效果:
代码2:(没有添加括号,失败)
--动态查表名,并查找该表数据
begin
declare @tabName varchar(50)
declare @sql varchar(500)
set @tabName = ('FORM_' + convert(nvarchar,(select fc.formId from FormCustom_ fc)))
set @sql = 'select * from ' + quotename(@tabName)
exec @sql
end
效果:
文章参考:
SQL server 动态查询(表名或字段动态),并且获取想得到的返回值结果( exec sp_execute