我正在尝试从 table1 中获取 ID,并根据检索到的 ID 从 table2 中选择数据。所以我打开了一个 cursor1 来检索这些 ID,然后我尝试遍历它并用 table2 的详细信息填充 cursor2。调试时我意识到 cursor1 已正确填充,循环工作正常,但只返回最后一条记录。以下是我的oracle程序:
PROCEDURE TEST_LIST(P_ITEM_ID NUMBER,
P_REFCUR OUT SYS_REFCURSOR) AS
BEGIN
DECLARE CURSOR V_REFCUR is
SELECT T.ID
FROM MY_TABLE_NAME T
WHERE T.ITEM_ID = P_ITEM_ID;
BEGIN
FOR V IN V_REFCUR LOOP
IF V.ID IS NOT NULL THEN
OPEN P_REFCUR FOR
SELECT G.*
FROM MY_SECOND_TABLE G
WHERE G.ID = V.ID
ORDER BY G.TABLE_DATE;
END IF;
END LOOP;
END;
END TEST_LIST;
我怎样才能返回整个列表?我是 SQL 新手,感谢您的帮助。
您不需要第一个光标。在第一个和第二个表之间进行简单的连接。
PROCEDURE TEST_LIST(P_ITEM_ID NUMBER,
P_REFCUR OUT SYS_REFCURSOR) AS
BEGIN
OPEN P_REFCUR FOR
SELECT G.*
FROM MY_SECOND_TABLE G
join MY_TABLE_NAME T
on G.ID = T.ID
WHERE T.ITEM_ID = P_ITEM_ID
ORDER BY G.TABLE_DATE;
END;
END TEST_LIST;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句