0

我无法确定在 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”语句。请随时纠正我的语法中的任何其他问题。谢谢!

4

1 回答 1

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

于 2013-04-05T18:16:48.410 回答