【问题标题】:SQL Query: Using CursorsSQL 查询:使用游标
【发布时间】:2013-11-04 15:51:09
【问题描述】:

我需要一些关于 SQL Server 和游标的说明:

我有一个名为 Order 的表:

OrderID   Item   Amount
1         A      10
1         B      1
2         A      5
2         C      4
2         D      21
3         B      11

我有第二个名为 Storage 的表:

   Item   Amount
   A      40
   B      44
   C      20
   D      1

对于每个 OrderID,我想检查是否有足够的商品可用。如果没有,我想返回一条错误消息。游标怎么能做到这一点?嵌套游标是解决这个问题的方法吗?我的主要问题是了解如何将 OrderID 作为 ID=1、2、3 等的实际“组”而不是逐行获取

【问题讨论】:

  • 你真的需要 cursor 来解决你的问题吗?
  • 你必须使用游标吗?一般来说,您应该使用像 Select OrderID, 'Error, not enough in store' from Order, Storage where Order.Item = Storage.Item and Order.Amount > Storage.Amount 这样的集合基础方法
  • 啊根本不需要光标!非常感谢 luigi,这似乎可以解决问题!:) 还有一个问题:我要使用存储过程来执行命令。一旦出现上述错误(库存不足),是否可以停止特定订单?
  • 尝试 WHILE / BREAK 语句。

标签: sql sql-server cursor


【解决方案1】:

请不要使用光标。如果需要抛出错误,可以使用 try / catch。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2022-01-22
    • 2011-08-14
    • 2017-09-08
    • 1970-01-01
    相关资源
    最近更新 更多