在Teradata中找不到Oracle / PL SQL游标%

时间:2011-11-01 07:30:31

标签: oracle stored-procedures plsql cursor teradata

在Teradata中找到的Oracle CURSOR%NOTFOUND相当于什么?

如果没有,那么我如何将下面的代码翻译成在Teradata中运行。

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

由于

1 个答案:

答案 0 :(得分:3)

有关Teradata中CURSOR处理/行为的详细信息,请参阅http://www.info.teradata.com/do_redirect.cfm?itemid=062280010中的第47页

基本上相当于Teradata中Oracle的OPEN_CUR1%NOTFOUNDSQLSTATE设置为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),这意味着“一切都很好,数据可用”。