这是我的情况:& J D" }. @1 m4 r, \0 W
假设我有一个存储过程,我需要存储过程中,我需要id调用另一个存储过程。有没有办法做到这一点?# b. b6 R9 c+ S0 c g# @7 f w
而不是这样做: 7 E( f5 B* ? b$ v3 b7 }) Wexec p_MyInnerProcedure 4exec p_MyInnerProcedure 7exec p_MyInnerProcedure 12exec p_MyInnerProcedure 22exec p_MyInnerProcedure 19做这样的事:" k' f O" y' b0 w
*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 …性能不应该成为大问题. O; v* L' S# E2 F. v, i
3 j5 N% R/ V- ?+ C. O& r解决方案: 5 {- {) F4 ~( f
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