sql server 存储过程中使用循环,需要定义临时变量a(@i),0<@i<15.请问该怎么定义它。
decalre定义变量不写了set@i=1;while@i<15beginselectclume1fromtable1whereid=@iasa(@i);set@i=@i...
decalre定义变量不写了
set @i = 1;
while @i<15
begin
select clume1 from table1 where id = @i as a(@i);
set @i = @i +1;
end
print (a(5));
上面的a(@i)是瞎造的,表达一个动态变量的意思。
我想让这个临时变量跟着@i自增。
@i查询出几个条目,a(@i)就被定义了几个临时变量。
这样接下来再组织insert into ...values(a1,a2,a3...)就可以了。 展开
set @i = 1;
while @i<15
begin
select clume1 from table1 where id = @i as a(@i);
set @i = @i +1;
end
print (a(5));
上面的a(@i)是瞎造的,表达一个动态变量的意思。
我想让这个临时变量跟着@i自增。
@i查询出几个条目,a(@i)就被定义了几个临时变量。
这样接下来再组织insert into ...values(a1,a2,a3...)就可以了。 展开
2个回答
展开全部
DECLARE @i INT
DECLARE @a1 INT
DECLARE @a2 INT
DECLARE @a3 INT
SET @i=1
SET @a1=0
SET @a2=0
SET @a3=0
CREATE TABLE #t1(
a1 INT,
a2 INT,
a3 int
)
WHILE @i<10
BEGIN
SET @a1 = 2*@i + 1
SET @a2 = @i +3 +@a1
SET @a3 = 3*@i +5 + @a2
INSERT INTO #t1(a1,a2,a3) VALUES(@a1,@a2,@a3)
SET @i +=1
end
SELECT * FROM #t1
DECLARE @a1 INT
DECLARE @a2 INT
DECLARE @a3 INT
SET @i=1
SET @a1=0
SET @a2=0
SET @a3=0
CREATE TABLE #t1(
a1 INT,
a2 INT,
a3 int
)
WHILE @i<10
BEGIN
SET @a1 = 2*@i + 1
SET @a2 = @i +3 +@a1
SET @a3 = 3*@i +5 + @a2
INSERT INTO #t1(a1,a2,a3) VALUES(@a1,@a2,@a3)
SET @i +=1
end
SELECT * FROM #t1
追问
你没理解我的意思。我是要@a1,@a2,@a3的1,2,3由@i来指定。比如@i=5,那就把查询到的值赋给@a5,@i=7,那就把查询到的值赋给@a7。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是想赋值吗?
sqlserver中动态对象一般采用拼接的形式,最后用exec(@sql)来执行
不过你的需求,貌似用
insert into tb1() select * from tb2就可以解决吧
sqlserver中动态对象一般采用拼接的形式,最后用exec(@sql)来执行
不过你的需求,貌似用
insert into tb1() select * from tb2就可以解决吧
追问
解决不了。这是要把tb1的某一列筛选出来并按照特定的顺序排成行插入到tb2里。如果单纯的表1扔表2里就不用这么麻烦了。
追答
所有的值特定顺序都一致的话,在select 部分可以更改输出列的顺序啊
你如果一定要把列值都输出赋值出来的话,那还是一个一个定义出来变量吧
如果太多,嫌麻烦,可以用系统表拼接出来
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询