【问题标题】:Can the results in a cursor be used on a secondary cursor query?游标中的结果可以用于辅助游标查询吗?
【发布时间】:2013-04-04 19:14:56
【问题描述】:

我无法确定在 cursor2 中使用来自 cursor1 的结果的正确方法。这可以做到吗?我读过它们可以存储在声明的 VARCHAR(8000) 中,但是会引发不正确的类型错误。我的第二个问题是,如果可以存储这些结果,它们可以容纳多列/多行吗?我对 DB2 不是很熟悉,因此如果您能提供任何帮助,我们将不胜感激。

这是代码中的样子:

     BEGIN
     DECLARE v_type VARCHAR(8000);
     DECLARE cursor1 CURSOR WITH RETURN FOR SELECT type FROM vehicles;
     DECLARE cursor2 CURSOR WITH RETURN FOR SELECT * FROM manufacturers WHERE type LIKE v_type;

     OPEN cursor1
     FETCH cursor1 INTO v_type;
     CLOSE cursor1;
     OPEN cursor2;
     END
     @

最后,有什么方法可以测试游标是否没有结果?理想情况下,通过“if”语句。请随时纠正我的语法中的任何其他问题。谢谢!

【问题讨论】:

    标签: sql stored-procedures db2


    【解决方案1】:

    JOIN 不起作用吗?类似以下的内容呢:

    DECLARE Manufactured_Vehicle CURSOR WITH RETURN FOR
    SELECT <list columns in manufacturers>
    FROM manufacturers
    JOIN vehicles
      ON vehicles.type = manufacturers.v_type -- whatever the relationship is
    

    以这种方式存储结果没有任何意义。

    另外,一般来说,您打算做什么?我的意思是,当结果集可能变得太大时,游标通常被认为是“黑客”——SQL 旨在以“基于集”的方式工作,而不是逐行工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      相关资源
      最近更新 更多