2010-07-08 55 views
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; 

編譯器給了我這個錯誤:error:label'close_c1'used used but defined。 我該如何解決這個問題?

+0

這是真正關心你的嵌入式SQL處理一個問題 - 您使用的是哪一個? – 2010-07-08 19:16:38

+0

我正在使用DB2與C++ – Dave 2010-07-08 19:55:17

+0

我懷疑你的WHENEVER語句不是,當處理髮射C++'goto'語句。現在,嵌入式SQL的使用非常少見,所以您最好在DB2特定的站點上詢問。 – 2010-07-08 21:34:06

回答

1

只是猜測... 把WHENEVER行首先放入你的嵌入式sql序列。

從「SQL參考卷2」:

WHENEVER
.....
Note:
.....
Every executable SQL statement in a program is within the scope of one implicit or >explicit WHENEVER statement of each type. The scope of a WHENEVER statement is related to the listing sequence of the statements in >the program, not their execution sequence.