存储过程中 的 表名 如何才能使用 变量?(200分)

  • 主题发起人 主题发起人 Orber
  • 开始时间 开始时间
O

Orber

Unregistered / Unconfirmed
GUEST, unregistred user!
declare @table_name varchar(20)
declare @table_name1 varchar(10)
declare @table_name2 varchar(10)

set @table_name1 = 'Player'
set @table_name2 = 'Base'
set @table_name = @table_name1 + @table_name2
select * from @table_name


以上只是一个简单的例子,可能看起来多此一举,但实际的例子中需要 对变量中存储的表名进行查询,请问该如何实现?
 
exec('select * from '+@table_name)
 
自己参考一下下面这个存储过程吧

CREATE procedure test
@tablename varchar(20),
@fieldname varchar(20),
@fieldname1 varchar(20)
as
begin
declare @sqlstr varchar(255)
set @sqlstr='create table '+@tablename
set @sqlstr=@sqlstr+' (id int identity(1,1) not null ,'
set @sqlstr=@sqlstr+@fieldname+' varchar(20) null,'
set @sqlstr=@sqlstr+@fieldname1+' varchar(20) null) on [primary]'
exec(@sqlstr)
end
GO
 
多人接受答案了。
 
其实第一种写法就是表名能不能用变量的问题。验证一下,不行再想其它办法。
 
用MS SQL Server中的sp_executesql系统存储过程,具体如何用,自己参照Help
 
后退
顶部