1

埋め込み SQL でテーブルの行を印刷しようとしています。私はこのコードを持っています。ここで、publication はテーブルで、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

推測するだけです...埋め込みSQLシーケンスの最初にWHENEVER行を入れてください。

「SQL リファレンス 第 2 巻」より:

WHENEVER
.....
注:
.....
プログラム内のすべての実行可能な SQL ステートメントは、各タイプの 1 つの暗黙的または明示的な WHENEVER ステートメントの有効範囲内にあります。WHENEVER ステートメントの有効範囲は、実行順序ではなく、プログラム内のステートメントのリスト シーケンスに関連しています。

于 2010-07-08T21:48:39.730 に答える