2016-01-20 100 views
-1

我正在編寫IBM i 5 V7R1上的SQL過程。 如果我想在for循環之後返回結果集,我無法創建該過程。 下面是代碼:DB2過程在for循環後返回結果集

create or replace procedure test1() 
    DYNAMIC RESULT SETS 1 
    LANGUAGE SQL 
    SPECIFIC EDVVAEH1.test1 
    NOT DETERMINISTIC 
    MODIFIES SQL DATA 
    CALLED ON NULL INPUT 
    SET OPTION ALWBLK = *ALLREAD , 
    ALWCPYDTA = *OPTIMIZE , 
    COMMIT = *NONE , 
    DECRESULT = (31, 31, 00) , 
    DFTRDBCOL = *NONE , 
    DYNDFTCOL = *NO , 
    DYNUSRPRF = *USER , 
    SRTSEQ = *HEX 
    proc: BEGIN 
    DECLARE x VARCHAR(255); 
    DECLARE return_cur CURSOR with return FOR 
     select * from sysibm.sysdummy1; 
    loop1: for record as C1 cursor for 
     SELECT TABLE_NAME 
     from qsys2.systables 
    DO 
    SET x = record.table_name; 
    END FOR loop1; 
    open return_cur; 
    END proc 

作爲選項定義,我想回到這兩個循環後的結果集,但它不會讓我創建這個程序。
的錯誤是-104令牌:「聲明的終結」是無效的,但一切都在那裏:(

+0

我建議查看SQL語法... [DB2 for i SQL Reference 7.1](http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/db2/rbafzintro.htm) – Charles

+0

我花了小時閱讀此... – ChaosGramer

+0

你是如何運行該聲明?當我運行您在iNav'運行SQL腳本'中提供的內容時,我得到的唯一錯誤是關於「X」的缺失聲明。如果我爲X添加DECLARE,它會創建好。 – user2338816

回答

0

看來,我發現我的問題的根本原因,但我不能修復它 據。正如我所看到的,我的Access對於for語句存在問題 我在「數據庫開發」視圖中將語句複製到了RDi 9.1中,並在那裏運行它,還設置了語句命令的另一端,之後我能夠創建我的程序。

現在我需要等待,直到有人在我公司可提供我的客戶端訪問的PTF。我已經嘗試安裝與IBM我提供的所有的PTF,但沒有改進...

如果有人有一個想法,我可以在哪裏下載客戶端訪問PTF請給我一個提示。 IBM網站對我來說是不可能的,因爲我沒有註冊IBM i。

謝謝。

+0

假設您正在運行Windows,請參閱[**受支持版本**的最新Service Pack](http://www-03.ibm.com/systems/power/software/i/access/windows_sp.html)。但是,如果您的服務器的DB2組級別僅爲「2」,則服務器本身似乎很可能有點不可靠。 – user2338816

+0

我剛剛意識到「2」對於DB2組來說不是一個有意義的級別。在先前的評論中錯誤的PTF號碼,直到現在我才注意到。 – user2338816

+0

好吧,我在IBm ftp文件夾中找到了正確的服務包。從現在開始,我的客戶端訪問正在運行,我知道從哪裏獲取更新。謝謝大家 – ChaosGramer