我有一个场景,因为我需要读取一个表(只包含一个包含1000条记录的列)作为procedure1&将该值传递给另一个过程。在第二个过程中,它应该接受来自过程1&的值(表名)。我需要查询所有表中的一些记录集。我可以将其作为一个程序来执行。我需要将所有这些作为db2过程本身来完成。因为,我是这些程序的新手,无法弄明白。
示例代码片段将不胜感激。
请帮助我。 提前致谢
答案 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