Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Переход на следующую итерацию и выход из цикла for / 7 сообщений из 7, страница 1 из 1
04.10.2016, 20:04
    #39320567
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход на следующую итерацию и выход из цикла for
Здравствуйте всем!

DB2 9.7

В теле хранимой процедуры есть цикл for. Какие операторы позволяют выполнить преждевременный выход из цикла и принудительный переход на следующую итерацию?

Спасибо
С уважением, Семен Попов
...
Рейтинг: 0 / 0
05.10.2016, 08:32
    #39320690
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход на следующую итерацию и выход из цикла for
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
for c as select * from TAB
do
     If (FLD=1) then 
         break;
     else
         continue;
     end if;
end for


Ругается на continue. break скушал
...
Рейтинг: 0 / 0
05.10.2016, 09:27
    #39320716
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход на следующую итерацию и выход из цикла for
Semen Popov,

Добрый день.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
--#SET TERMINATOR @
set serveroutput on@

begin
  declare i int default 1;
  for c1 as select tabschema, tabname from syscat.tables
  do
    call dbms_output.put_line(tabschema||'.'||tabname);
    set i=i+1;
    if (i>5) then 
      goto exit;
    end if;
  end for;
  exit:
  set i=i;
end@
...
Рейтинг: 0 / 0
05.10.2016, 12:08
    #39320903
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход на следующую итерацию и выход из цикла for
Mark Barinstein, спасибо. Но что-то не подходит

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create or replace function TMPFUNC (F_PAR integer)
returns integer
reads sql data
no external action
begin 
 declare f_retval integer default 0;
 for cond_ as (select * from MYTAB where COND=F_PAR)
 do
    if (FLD>0) then
    	goto next;
    else
    	goto exit;
    end if;
next:
 end for;
exit:
 return f_retval;
end

DB21034E  Данная команда обрабатывалась как оператор SQL, поскольку она не 
является допустимой командой процессора командной строки.  При обработке SQL 
было получено сообщение:
SQL0104N  Обнаружен неправильный элемент "end for; exit:" после текста ";     
end if; next: ".  Список возможных правильных элементов: "<space>".  LINE 
NUMBER=16.  SQLSTATE=42601
...
Рейтинг: 0 / 0
05.10.2016, 12:35
    #39320931
db2sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход на следующую итерацию и выход из цикла for
...
Рейтинг: 0 / 0
05.10.2016, 12:42
    #39320937
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход на следующую итерацию и выход из цикла for
Semen Popov,
values test_for('SYSCAT')
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create or replace function test_for(p_tabschema varchar(128))
returns integer
reads sql data
no external action
begin atomic
  declare f_retval int default 0;
  forloop:
  for c1 as select tabname from syscat.tables where tabschema=p_tabschema
  do
    set f_retval=f_retval+1;
    if (f_retval>5) then 
      leave forloop;
    else
      iterate forloop;
    end if;
  end for;
  return f_retval;
end@


...
Рейтинг: 0 / 0
05.10.2016, 12:56
    #39320952
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход на следующую итерацию и выход из цикла for
Спасибо большое. Сработало
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Переход на следующую итерацию и выход из цикла for / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]