表名可以是变量吗? 想请教一下,怎么把T-SQL中的表名用一个变量表示,这样用哪个表的时候,这样把那个表名赋值过来就可以了。我大概查了一下这里的记录,很多方法都是要用单引号才拆原来的脚本,但我觉得这样不易读了,加之本来单引号就多。所以想请教一下大家,谢了先~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以的去并sql语句就行.declare @sql varchar(800)set @sql='Orders'exec ('select * from ['+@sql+']') 可以declare @tb varchar(100)set @tb = 'sysobjects'exec('select * from '+ @tb) --------------------------------------------------------------------------------动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: declare @fname varchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fname varchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @num int, @sqls nvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableName ' exec sp_executesql @sqls,N'@a int output',@num output select @num 想请教一下,怎么把T-SQL中的表名用一个变量表示,这样用哪个表的时候,这样把那个表名赋值过来就可以了。 我大概查了一下这里的记录,很多方法都是要用单引号才拆原来的脚本,但我觉得这样不易读了,加之本来单引号就多。 所以想请教一下大家,谢了先~~要动态执行.declare @sql varchar(800)set @sql='表名'exec ('select * from ['+@sql+']') 如果是临时表的话还是用表变量吧.如:DECLARE @TABLE TABLE(Result varchar(100) null)INSERT INTO @TABLE(Result) values('df')DECLARE @Result varchar(100)select @Result = temp.Result from @TABLE as temp 如果是临时表的话还是用表变量吧.如:DECLARE @TABLE TABLE(Result varchar(100) null)INSERT INTO @TABLE(Result) values('df')DECLARE @Result varchar(100)select @Result = temp.Result from @TABLE as temp 当然可以啊我想楼主肯定这样用过create proc test(@table,@xx)as..... update @table set xx=@xx 这样是不行的 @table 无法识别 呵呵应该这样才行create proc test(@table,@xx)asdeclare @tb varchar(50)set @tb = @table..... update @tb set xx=@xx Convert(INT,NULL)这是什么意思呀 SQL 碰到一个问题 向各位请教一个库存表的问题,十分感谢!!完后结分 数据库复制能够激发某个程序吗 sp 里面为什么不能有同名的临时表? SQL2005递归解析 SQL语句的问题 vfp,sql的问题 请问在一个存储过程中能不能同时创建一个表,然后修改表结构,如果能,请举例,谢谢 请教一个用asp连接存储过程的问题 JSP开发中怎样实现每隔几天就修改数据库表中的某个字段? job 存储过程
去并sql语句就行.
declare @sql varchar(800)
set @sql='Orders'
exec ('select * from ['+@sql+']')
set @tb = 'sysobjects'
exec('select * from '+ @tb)
--------------------------------------------------------------------------------动态sql语句基本语法
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
set @sql='表名'
exec ('select * from ['+@sql+']')
select @Result = temp.Result from @TABLE as temp
select @Result = temp.Result from @TABLE as temp
我想楼主肯定这样用过
create proc test
(@table,@xx)
as..... update @table set xx=@xx
这样是不行的 @table 无法识别 呵呵
应该这样才行
create proc test
(@table,@xx)
as
declare @tb varchar(50)
set @tb = @table
..... update @tb set xx=@xx