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...)就可以了。
展开
 我来答
嗬哟嗬哟拔萝卜
2015-08-18 · 超过74用户采纳过TA的回答
知道小有建树答主
回答量:164
采纳率:100%
帮助的人:99.9万
展开全部
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
追问
你没理解我的意思。我是要@a1,@a2,@a3的1,2,3由@i来指定。比如@i=5,那就把查询到的值赋给@a5,@i=7,那就把查询到的值赋给@a7。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szm341
2015-08-18 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5175万
展开全部
你是想赋值吗?
sqlserver中动态对象一般采用拼接的形式,最后用exec(@sql)来执行
不过你的需求,貌似用
insert into tb1() select * from tb2就可以解决吧
追问
解决不了。这是要把tb1的某一列筛选出来并按照特定的顺序排成行插入到tb2里。如果单纯的表1扔表2里就不用这么麻烦了。
追答
所有的值特定顺序都一致的话,在select 部分可以更改输出列的顺序啊
你如果一定要把列值都输出赋值出来的话,那还是一个一个定义出来变量吧
如果太多,嫌麻烦,可以用系统表拼接出来
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式