1

我正在尝试在嵌入式 sql 中打印表的行。我有这个代码,其中发布是表,pubid 是属性。我试过这个:

    EXEC SQL DECLARE C1 CURSOR FOR SELECT pubid FROM publication;
    EXEC SQL OPEN C1;
    EXEC SQL WHENEVER NOT FOUND GOTO close_c1;
    for(;;) {
        EXEC SQL FETCH C1 INTO :pubid;
        cout<<pubid<<endl;
    }
    close_c1:
    EXEC SQL CLOSE C1;

编译器给了我这个错误:错误:标签'close_c1'已使用但未定义。我该如何解决?

4

1 回答 1

1

只是猜测...将 WHENEVER 行放在嵌入式 sql 序列的首位。

来自“SQL 参考卷 2”:

WHENEVER
.....
注意:
.....
程序中的每个可执行 SQL 语句都在每种类型的一个隐式或 >显式 WHENEVER 语句的范围内。WHENEVER 语句的范围与程序中语句的列出顺序有关,而不是它们的执行顺序。

于 2010-07-08T21:48:39.730 回答