1

CURSOR%NOTFOUND在 Teradata 中找到的 Oracle 的等价物是什么?

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

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

谢谢

4

1 回答 1

3

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

基本上与OPEN_CUR1%NOTFOUNDTeradata 中的 Oracle 相同的是,SQLSTATE它设置为7362SQLCODEto '02000'... 来处理这个问题,您可以查看第 49、76、192-198、405 ff 页。的上述文件。

编辑 - 根据评论:

来自第 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)这基本上意味着“一切都很好并且数据可用”。

于 2011-11-01T07:43:07.707 回答