在Teradata中找到的Oracle CURSOR%NOTFOUND
相当于什么?
如果没有,那么我如何将下面的代码翻译成在Teradata中运行。
OPEN OPEN_CUR1;
LOOP
FETCH OPEN_CUR1 INTO ... some variables ...;
EXIT WHEN OPEN_CUR1%NOTFOUND;
CLOSE OPEN_CUR1;
由于
答案 0 :(得分:3)
有关Teradata中CURSOR处理/行为的详细信息,请参阅http://www.info.teradata.com/do_redirect.cfm?itemid=062280010中的第47页
基本上相当于Teradata中Oracle的OPEN_CUR1%NOTFOUND
是SQLSTATE
设置为7362
而SQLCODE
设置为'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)
,这意味着“一切都很好,数据可用”。