2011-11-01 48 views
1

在Teradata中找到的Oracle的CURSOR%NOTFOUND的等效物是什麼?在Teradata中找不到Oracle/PL SQL curosr%相當於

如果不是,那麼我該如何翻譯下面的代碼才能在Teradata中運行。

OPEN OPEN_CUR1; 
    LOOP 
     FETCH OPEN_CUR1 INTO ... some variables ...; 
     EXIT WHEN OPEN_CUR1%NOTFOUND; 
CLOSE OPEN_CUR1; 

感謝

回答

3

有關的Teradata參見第47頁的CURSOR處理/行爲http://www.info.teradata.com/do_redirect.cfm?itemid=062280010

基本上相當於OPEN_CUR1%NOTFOUND從Oracle在Teradata的詳細信息是SQLSTATE設置爲7362SQLCODE'02000' ...爲了處理這個問題,你可以檢查第49,76,192-198,405頁。上述文件。

編輯 - 按評論:

從例如49頁

CREATE PROCEDURE sp1 (OUT par1 CHARACTER(50)) 
BEGIN 
DECLARE var1 INTEGER; 
DECLARE projcursor CURSOR FOR 
SELECT projid, projectdesc 
FROM project; 
OPEN projcursor; 
WHILE (SQLCODE = 0) 
FETCH projcursor INTO var1, par1; 
END WHILE; 
FETCH projcursor INTO var1, par1; 
CLOSE projcursor; 
END; 

對他們使用WHILE (SQLCODE = 0)這意味着基本「而一切都很好,數據可用」。

+0

感謝您的及時響應和共享文檔。我已經閱讀了文檔,但是我想要一個精確的例子,可以替代未找到的遊標。有沒有足夠的SQLState? – Ali

+0

看到我上面的編輯...我仍然強烈建議閱讀有關SQLSTATE HANDLERs等部分 – Yahia