Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 T-SQL中类似PHP的$$var(SQLServer2008)_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 T-SQL中类似PHP的$$var(SQLServer2008)

Sql server 2008 T-SQL中类似PHP的$$var(SQLServer2008),sql-server-2008,tsql,Sql Server 2008,Tsql,是否有任何方法可以执行php$$var之类的操作 这将使变量的值成为变量名 我在谷歌上搜索了好几个小时,找不到任何能满足我需要的 谢谢 编辑: 目前我想要达到的目标与此类似 declare @table1 table(Name Varchar(100)) declare @table2 table(Name Varchar(100)) ... declare @table10 table(Name Varchar(100)) declare @int1 int set @int1 = 0 wh

是否有任何方法可以执行php
$$var
之类的操作

这将使变量的值成为变量名

我在谷歌上搜索了好几个小时,找不到任何能满足我需要的

谢谢

编辑:

目前我想要达到的目标与此类似

declare @table1 table(Name Varchar(100))
declare @table2 table(Name Varchar(100))
...
declare @table10 table(Name Varchar(100))

declare @int1 int
set @int1 = 0
while @int1 < 10
begin
select @[table + @int1]
END
declare@table1表(名称Varchar(100))
声明@table2表(名称Varchar(100))
...
声明@table10表(名称Varchar(100))
声明@int1 int
设置@int1=0
而@int1<10
开始
选择@[table+@int1]
结束

由于问题中的示例不是有效的t-SQL,因此不清楚您是要选择
@[table+@int1]
的值,还是从表中选择(即
从[table+@int1]
中选择名称)-我在这里假设它是第二个值

一种方法是使用一个带有对行进行分类的指示符列的表:

declare @table table(Name Varchar(100), groupid int)
...

declare @int1 int
set @int1 = 0
while @int1 < 10
begin
  select name from @table WHERE groupid = @int1
  set @int1 = @int1 + 1
end
declare@table表(名称Varchar(100),groupid int)
...
声明@int1 int
设置@int1=0
而@int1<10
开始
从@table中选择名称,其中groupid=@int1
设置@int1=@int1+1
结束

否,T-SQL中没有等效项。使用动态SQL可能会达到类似的效果,但由于变量范围的问题,这可能会有问题。请考虑更新你的问题,你希望解决的问题的一些细节-很可能有一个替代的解决方案。