Db2从每个表中获取最小记录集的过程

时间:2014-07-23 14:58:48

标签: db2

我有一个场景,因为我需要读取一个表(只包含一个包含1000条记录的列)作为procedure1&将该值传递给另一个过程。在第二个过程中,它应该接受来自过程1&的值(表名)。我需要查询所有表中的一些记录集。我可以将其作为一个程序来执行。我需要将所有这些作为db2过程本身来完成。因为,我是这些程序的新手,无法弄明白。

示例代码片段将不胜感激。

请帮助我。 提前致谢

2 个答案:

答案 0 :(得分:0)

您似乎需要在一个过程中定义“返回调用者的游标”,并在第二个过程中使用关联并分配。

http://www.sqlines.com/db2-to-oracle/process_result_sets_in_procedures

答案 1 :(得分:0)

这些是我的程序:

CREATE PROCEDURE DUMMY2 ()
    DYNAMIC RESULT SETS 1
P1: BEGIN
    -- Declare cursor
    DECLARE cursor1 CURSOR WITH RETURN TO CALLER for
    SELECT TBNAME FROM VENKATASD.META_DISTINCT;
    -- Cursor left open for client application
    OPEN cursor1;
END P1

过程2:

CREATE PROCEDURE DUMMY3 (OUT P_TBNAME VARCHAR(100))
    DYNAMIC RESULT SETS 1
P1: BEGIN
    DECLARE result RESULT_SET_LOCATOR VARYING;
    -- Declare cursor
    -------DECLARE cursor1 CURSOR WITH RETURN for-----
    CALL DUMMY2();
    ASSOCIATE RESULT SET LOCATOR(result) WITH PROCEDURE DUMMY2;
    ALLOCATE cur CURSOR FOR RESULT SET result;

    FETCH cur INTO P_TBNAME;
    -- Cursor left open for client application
    CLOSE cur;
END P1

如果我错了,请纠正我。我在控制台上找不到任何输出。这是我的输出屏幕:

Run: VENKATASD.DUMMY3(VARCHAR(100))
{call VENKATASD.DUMMY3(?)}

Run of routine completed successfully.
Query execution time => 20 ms