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

Компилятор дает мне эту ошибку: ошибка: метка «close_c1» используется, но не определена. Как это исправить?

+0

Это действительно вопрос о своем встроенном процессоре SQL - который один вы используете? – 2010-07-08 19:16:38

+0

Я использую DB2 с C++ – Dave

+0

Я подозреваю, что ваш оператор WHENEVER не является, когда обрабатывается испускание оператора C++ 'goto'. Использование встроенного SQL в наши дни довольно редко, поэтому вам может быть лучше спросить сайт, специфичный для DB2. – 2010-07-08 21:34:06

ответ

1

Просто угадать ... Поместите линию WHENEVER сначала в свою встроенную sql-последовательность.

С "SQL Reference, Том 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.

 Смежные вопросы

  • Нет связанных вопросов^_^