|
|
1
219
一般来说,我总是寻找一种基于集合的方法(有时以改变模式为代价)。 然而,这个片段确实有它的位置。。
|
|
|
2
40
您可以这样做:通过CustomerID(使用AdventureWorks)来订购您的表
只要可以定义某种类型的
|
|
|
3
30
好的,所以我永远不会把这样的代码投入生产,但它确实满足了您的需求。 |
|
|
4
14
我会使用可接受的答案,但另一种可能是使用表变量来保存一组编号的值(在本例中只是表的ID字段),并通过与表的连接按行编号循环这些值,以检索循环中操作所需的任何内容。
|
|
|
5
11
马克的回答很好(如果我能想出如何做的话,我会对此发表评论!)
|
|
|
6
7
例如,假设您有一个客户表,并且您想要计算他们订单的总和,您将创建一个函数,该函数接受CustomerID并返回总和。
其中函数的外观如下所示:
显然,上述示例可以在单个查询中不使用用户定义的函数来完成。 缺点是函数非常有限—存储过程的许多功能在用户定义的函数中不可用,并且将存储过程转换为函数并不总是可行的。 |
|
7
6
对于SQL Server 2005以后的版本,您可以使用 CROSS APPLY 和一个表值函数。 为了清楚起见,我指的是存储过程可以转换为表值函数的情况。 |
|
|
8
4
这是对已经提供的答案的一种变体,但性能应该更好,因为它不需要ORDER BY、COUNT或MIN/MAX。这种方法的唯一缺点是您必须创建一个临时表来保存所有ID(假设您的CustomerID列表中存在空白)。 尽管如此,我同意马克·鲍威尔的观点,但总的来说,基于集合的方法应该更好。
|
|
|
9
3
我对一些需要查看的varchar使用这种方法,首先将它们放在临时表中,给它们一个ID。 |
|
|
10
2
如果您不知道如何使用游标,我认为您必须在外部执行(获取表,然后为每个语句运行,每次调用sp) |
|
|
11
1
(在更大的数据集上,我会使用上面提到的解决方案之一)。 |
|
|
12
1
|
|
13
1
更好的解决办法是
这是一个干净的表格格式输出。而如果对每一行运行SP,则会为每个迭代获得一个单独的查询结果,这很难看。 |
|
|
14
0
|
|
|
15
0
我有一些生产代码,一次只能处理20名员工,下面是代码的框架。我只是复制了生产代码并删除了下面的内容。
|
|
|
16
0
我遇到了一种情况,需要对结果集(表)执行一系列操作。这些操作都是集合操作,所以这不是问题,但是。。。 我需要在多个地方这样做。因此,将相关部分放入一个表类型,然后填充一个表变量w/每个结果集,这样我就可以调用sp并在每次需要时重复这些操作。
@约翰内斯没有洞察到他的动机,所以这可能对他有帮助,也可能没有帮助。 https://codingsight.com/passing-data-table-as-parameter-to-stored-procedures/ 这是设置
|
|
|
17
-1
我喜欢做类似的事情(尽管它仍然非常类似于使用光标) [守则]
请注意,您没有 您的temp/variable表中的identity或isited列,我只是更喜欢这样做,这样我就不必在迭代循环时从集合中删除top记录。 |