好的,所以我不确定我是否以正确的方式进行此操作。但我的情况是我有一个存储过程,我想使用它所需要的所有可能的输入组合来测试。
假设我有一个带有两个参数的存储过程,如下所示:
set UsefulValue = exec spMyStoredProc @ProfileID, @RoleID
现在在我的例子中,ProfileID 意味着类似于人的东西,而 RoleID 意味着类似于系统角色的东西。我故意在这里有点笼统。关键是,我有大约 60,000 个已定义的人员,以及大约 600 个已定义的角色。
不幸的是,我正在测试的系统很复杂,就像糟糕透顶的复杂,我真的需要通过它的步伐运行这个程序。
好的,到目前为止和我在一起吗?希望你是;查看此 sql 以生成我最终将传递给存储过程的数据:
select profiles.ProfileID, roles.RoleID from Profile profiles
cross join dbo.DefinedRoles roles
这实际上非常好,但问题是它需要永远运行,坦率地说,我不需要这两个值的每一个排列。
所以我尝试像这样限制结果集:
select top 300000 profiles.ProfileObjID, roles.RoleName from dbo.Profile profiles
cross join dbo.rj_v_DefinedRoles roles
但是哎呀!这限制了最终结果,所以我最终得到的结果只有差不多 2-3 个角色(取决于我传递给顶部动词的内容),并且每个人都有一个 ProfileID。
我想要的,我的目标,是为我拥有的所有角色(大约 600 个)获得结果,并且对于每个角色,可能只使用 ProfileID 的一半而不是整个 shebang。
那我问的有意义吗?