【问题标题】:Oracle/PL SQL curosr%notfound equivalent in TeradataTeradata 中的 Oracle/PL SQL curosr%notfound 等效项
【发布时间】:2011-12-19 07:13:13
【问题描述】:

什么是 Teradata 中的 Oracle CURSOR%NOTFOUND

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

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

谢谢

【问题讨论】:

    标签: oracle stored-procedures plsql cursor teradata


    【解决方案1】:

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

    【讨论】:

    • 感谢您的及时回复和分享文档。我已经浏览了文档,但我想要一个精确的例子来说明什么可以代替光标找不到。有没有足够的 SQLState ?
    • 参见我上面的编辑...我仍然强烈建议阅读有关 SQLSTATE HANDLER 等的部分。
    猜你喜欢
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2014-09-14
    • 2015-06-27
    • 2015-06-13
    • 1970-01-01
    相关资源
    最近更新 更多