当前位置: 首页 > 面试题库 >

遍历SQL Server 2008中的行

傅彬
2023-03-14
问题内容

考虑表SAMPLE:

id       integer
name     nvarchar(10)

有一个称为的存储过程myproc。它只需要一个参数(即id)

给定名称作为参数,找到带有的所有行name = @nameparameter并将所有这些ID传递给myproc

例如:

sample->
1   mark
2   mark
3   stu
41  mark

mark被传递,1 ,2 and 41被传递到myproc个别。

即应发生以下情况:

execute myproc 1
execute myproc 2
execute myproc 41

我无法触摸myproc也看不到它的内容。我只需要将值传递给它。


问题答案:

如果 必须 进行迭代(*),请使用旨在进行迭代的结构-cursor。我非常讨厌,但是如果它最清楚地表达了您的意图,请说:

DECLARE @ID int
DECLARE IDs CURSOR LOCAL FOR select ID from SAMPLE where Name = @NameParameter

OPEN IDs
FETCH NEXT FROM IDs into @ID
WHILE @@FETCH_STATUS = 0
BEGIN
    exec myproc @ID

    FETCH NEXT FROM IDs into @ID
END

CLOSE IDs
DEALLOCATE IDs

(*)这个答案最近得到了一些好评,但是我觉得我也应该在这里加入我的原始评论,并添加一些一般性建议:

在SQL中, 通常 应寻求基于集合的解决方案。整个语言都围绕基于集合的解决方案,(依次)优化器围绕使基于集合的解决方案正常工作。反过来,我们可用于
优化 优化器的工具也是面向集合的-例如,将索引应用于表。

这里有 几个 地方的迭代是最好的办法的情况。这些都是少数是远远之间,并且可以比作杰克逊对优化规则-不要做-和(专家只)不这样做

首先,根据受影响的所有行的集合,更好地帮助您制定所需的内容-
要实现的总体更改是什么?-然后尝试制定一个包含该目标的查询。只有这样做产生的查询不能充分发挥作用(或者某些其他组件除了单独处理每一行外,无法执行其他任何操作),才应
考虑 迭代



 类似资料:
  • 本文向大家介绍JavaScript中的图遍历,包括了JavaScript中的图遍历的使用技巧和注意事项,需要的朋友参考一下 图遍历(也称为图搜索)是指访问(检查和/或更新)图中每个顶点的过程。此类遍历按访问顶点的顺序分类。

  • 本文向大家介绍JavaScript中的树遍历,包括了JavaScript中的树遍历的使用技巧和注意事项,需要的朋友参考一下 树遍历是指一次访问树数据结构中的每个节点的过程。此类遍历按访问节点的顺序分类。

  • 问题内容: 我创建了一种方法来解组xml(item.xml)文件。但是,如果有多个元素,如何遍历所有元素并使它们显示? 我的代码如下: 如果我的xml是 如何获取所有显示的值?谁能帮我? 问题答案: 我在大学的一些项目中使用过JAXB。据我所记得,您应该返回一个对象(例如),然后查询该对象以检索其中包含的元素。 因此,您的xml应该如下所示: 此时,您的 Java 代码将是:

  • 问题内容: 我有一个使用jsoncpp解码JSON字符串的C ++应用程序。我创建了以下函数,但仅向我显示了顶级对象… 如何获取转储整个对象列表的信息? - 功能 - -输入---- -输出- 问题答案: 您可能会遇到一些错误,这些错误似乎与您对递归或JSON的key-> value性质没有很好的了解以及如何与所使用的库相关联。我根本没有测试过此代码,但它应该可以更好地工作。

  • 问题内容: 在Java中,您可以使用for循环遍历数组中的对象,如下所示: 您可以在JavaScript中做同样的事情吗? 问题答案: 您有几种选择: 1.顺序for循环: 优点 适用于各种环境 您可以使用和流控制语句 缺点 太冗长 势在必行 容易出现一对一的错误(有时也称为栅栏错误) 2. Array.prototype.forEach ES5规范引入了许多有益的数组方法,其中之一是,它为我们提

  • 问题内容: 我发现我正在编写许多Makefile,可以使用 n个 元组列表清除它们。但是我找不到任何正确(干净)地进行此操作的方法。到目前为止,我只能使用 $(shell …) 和 tr , sed 或其他非Makefile标准。 例如,我想这样做: 有没有一种很好的方法来迭代Makefile中的 n个 元组列表?谢谢! 问题答案: Makefile本质上是声明性的,因此我认为make本身不能提供