我在找到使用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”语句。请随意纠正我的语法中的任何其他问题。谢谢!
答案 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被设计为以“基于集合”的方式工作,而不是逐行工作。