适用于表名不确定,是动态的。或者列名不确定的sql语句
1.用参数型
declare @sql nvarchar(1000) declare @table1 varchar(100) --1.1 表名知道,确定的 set @table1='t_person' --1.2 表名不知道 需要查询设置的 select @table1=table from t_table set @sql='select * from '''+@table1+'''t where 1=1 ' --用exec exec(@sql)
--用exec sp_executesql declare @sql nvarchar(1000) declare @table1 varchar(100) set @table1='t_person' set @sql=N'select * from '''+@table1+''' where 1=1' exec sp_executesql @sql,N'@table1 varchar(100)',@table1
2.带输出参数的sql
create procedure [dbo].[sp_GetPersonTable]
(
@person_bm varchar(100),
@table1 varchar(100) output
)
as
begin
declare @sql nvarchar(1000)
set @sql=N'select @person_bm =person_bm from '''+@table1 +''' where 1=1'
exec sp_executesql @sql,N'@person_bm varchar(100),@table1 varchar(100) output',@person_bm ,@table1 output
select @table1
end