17回答

0收藏

T-SQL:遍历一组已知值

技术问答 技术问答 520 人阅读 | 17 人回复 | 2022-03-03

这是我的情况:4 @& y; a1 X& n4 u2 _
假设我有一个存储过程,我需要存储过程中,我需要id调用另一个存储过程。有没有办法做到这一点?, y) c$ T0 P( N2 S1 N
而不是这样做:
: _7 J9 }" R. E1 ?% \: L. ^exec p_MyInnerProcedure 4exec p_MyInnerProcedure 7exec p_MyInnerProcedure 12exec p_MyInnerProcedure 22exec p_MyInnerProcedure 19做这样的事:
; N( G2 \% d7 `( ]: ]- `*magic where I specify my list contains 4,7,12,22,19*DECLARE my_cursor CURSOR FAST_FORWARD FOR*magic select*OPEN my_cursor FETCH NEXT FROM my_cursor INTO @MyIdWHILE @@FETCH_STATUS = 0BEGINexec p_MyInnerProcedure @MyIdFETCH NEXT FROM my_cursor INTO @MyIdEND我在这里的主要目标是维护(随着业务的变化很容易删除/添加)ID),能够在一行列出一切ID …性能不应该成为大问题- \2 G0 L7 U9 `, s2 A6 X  R  f5 ]
                                                                4 L, f+ B3 L. g- F8 Y+ h# R  J& T1 k1 q
    解决方案:                                                               
2 S7 B3 w$ @1 k' l% }" j6 U                                                                declare @ids table(idx int identity(1,1),id int)insert into @ids (id)    select 4 union    select 7 union    select 12 union    select 22 union    select 19declare @i intdeclare @cnt intselect @i = min(idx) - 1,@cnt = max(idx) from @idswhile @i < @cntbegin     select @i = @i  1     declare @id = select id from @ids where idx = @i     exec p_MyInnerProcedure @idend
分享到:
回复

使用道具 举报

回答|共 17 个

太阳在天上

发表于 2022-3-4 00:12:55 | 显示全部楼层

不错 支持一个了
回复

使用道具 举报

永远的过客一生的配角

发表于 2022-3-5 15:04:07 | 显示全部楼层

我只是路过,不发表意见
回复

使用道具 举报

心动欧巴

发表于 2022-3-6 15:58:50 | 显示全部楼层

向楼主学习
回复

使用道具 举报

夏日心情

发表于 2022-3-7 10:11:15 | 显示全部楼层

边撸边过
回复

使用道具 举报

无敌的战狼

发表于 2022-3-8 05:40:42 | 显示全部楼层

LZ是天才,坚定完毕
回复

使用道具 举报

欢子一

发表于 2022-3-8 12:07:21 | 显示全部楼层

我也顶起出售广告位
回复

使用道具 举报

糖人乐

发表于 2022-3-8 22:25:24 | 显示全部楼层

无论是不是沙发都得回复下
回复

使用道具 举报

无心为过

发表于 2022-3-9 04:13:43 | 显示全部楼层

前排支持下
回复

使用道具 举报

趙師兄

发表于 2022-3-9 10:00:30 | 显示全部楼层

支持楼主,用户楼主,楼主英明呀!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

29055 积分
9659 主题
热门推荐