我有一個場景,因爲我需要讀取一個表(僅包含一個包含1000條記錄的列)作爲過程1 &以將該值傳遞給另一個過程2。它應該接受procedure1的值(表名)&我需要從所有表中查詢一些記錄集。我可以將其作爲一個程序來完成。我的需要將所有這些作爲db2過程本身來完成。因爲,我對這些程序很陌生,無法弄清楚。Db2從每個表中獲取最小記錄集的過程
示例代碼片斷將不勝感激。
請幫助我。 在此先感謝
我有一個場景,因爲我需要讀取一個表(僅包含一個包含1000條記錄的列)作爲過程1 &以將該值傳遞給另一個過程2。它應該接受procedure1的值(表名)&我需要從所有表中查詢一些記錄集。我可以將其作爲一個程序來完成。我的需要將所有這些作爲db2過程本身來完成。因爲,我對這些程序很陌生,無法弄清楚。Db2從每個表中獲取最小記錄集的過程
示例代碼片斷將不勝感激。
請幫助我。 在此先感謝
似乎您需要在一個過程中定義「返回調用者的遊標」,並在第二個過程中使用關聯和分配。
http://www.sqlines.com/db2-to-oracle/process_result_sets_in_procedures
感謝您的回覆。正如你所說我遵循鏈接上的步驟。我無法找到任何輸出。請您詳細說明一下,因爲我是初學者這些程序 – HABBIE
這是我的程序:
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
這實際上應該是對問題的編輯,而不是回答。 –
您沒有獲取值,因爲第二個過程打開了第一個遊標,並且無法將這些值發回給調用者。您應該獲取這些值(將它們插入臨時表中),然後在該表上向該調用者打開一個光標。 – AngocA
DB2文檔提供了存儲過程的示例。除非您向我們展示您嘗試過的內容,否則我們不知道您需要了解哪些內容尚未包含在文檔中。據我們所知,我們可能擁有的任何示例都不會顯示如何做得比官方文檔更好。 – user2338816