游标中的结果可以用在辅助游标查询上吗?

时间:2013-04-04 19:14:57

标签: sql stored-procedures db2

我在找到使用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”语句。请随意纠正我的语法中的任何其他问题。谢谢!

1 个答案:

答案 0 :(得分:0)

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被设计为以“基于集合”的方式工作,而不是逐行工作。