powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с процедурой на добавление записей
13 сообщений из 13, страница 1 из 1
Помогите с процедурой на добавление записей
    #38855333
axi77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть процедура:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
begin
  /* Procedure Text */
  for select STATUS_ID, UNIT_ID, PROBA_ID
      from UNIT
      where UP = :P1
      into :VAR1, :VAR2, :VAR3
  do
  begin
    insert into UNIT (ID, UP, STATUS_ID, UNIT_ID, PROBA_ID)
    values (gen_id(CNT_UNIT, 1), :P1, :VAR1, :VAR2, :VAR3);
    suspend;
  end
end



Как заставить ее вставлять в таблицу все записи а не первую из Селекта ?

Спасибо.
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855359
stelvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suspend убрать
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855364
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
axi77,

Прикинь - а ты случаем вечный цикл не организовал?
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855366
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stelvic,

Не угадал ;)
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855401
axi77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stelvicsuspend убрать

Если убрать suspend БД вешается в стопор :-( Может я что то не так делаю ?
Записей в селекте всего 2-е.
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855414
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
axi77БД вешается в стопорОна не висит, она трудится. можешь подглядеть значение CNT_UNIT в другом коннекте. ;)
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855426
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
axi77,

потому что курсор чувствителен к изменениям самого себя. В трёшке не зациклится. А здесь можно вывертится прикрутив внешнюю сортировку
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855430
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно WHERE добавить...
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855568
axi77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterДостаточно WHERE добавить...
Можно немного подробнее ?

Спасибо.
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855684
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
axi77,

В цикле ты доходишь до только что вставленной записи. Читаешь ее. И опять вставляешь. И так по кругу ;)

Сделай хотя бы так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
  MAXID=GEN_ID(CNT_UNIT,0);
  FOR SELECT .... FROM UNIT WHERE UP=:P1 AND ID<:MAXID
  DO BEGIN
         INSERT ....;
         SUSPEND;
      END
       
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855793
axi77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasteraxi77,

В цикле ты доходишь до только что вставленной записи. Читаешь ее. И опять вставляешь. И так по кругу ;)

Сделай хотя бы так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
  MAXID=GEN_ID(CNT_UNIT,0);
  FOR SELECT .... FROM UNIT WHERE UP=:P1 AND ID<:MAXID
  DO BEGIN
         INSERT ....;
         SUSPEND;
      END
       



Не помогает WHERE, т.к. вставляет одну запись из запроса, а в запросе может быть множество записей с единым значением по полю UP.
Может есть еще мысли, как вставить множество записей из запроса ?

Заранее благодарен за ответ.
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38855811
axi77как вставить множество записей из запроса ?так, как вам выше говорили:
Код: sql
1.
2.
3.
4.
5.
6.
for select STATUS_ID, UNIT_ID, PROBA_ID
      from UNIT
      where UP = :P1
      order by UP + 0
      into :VAR1, :VAR2, :VAR3
  do
...
Рейтинг: 0 / 0
Помогите с процедурой на добавление записей
    #38856085
stelvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
axi77DarkMasteraxi77,

В цикле ты доходишь до только что вставленной записи. Читаешь ее. И опять вставляешь. И так по кругу ;)

Сделай хотя бы так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
  MAXID=GEN_ID(CNT_UNIT,0);
  FOR SELECT .... FROM UNIT WHERE UP=:P1 AND ID<:MAXID
  DO BEGIN
         INSERT ....;
         SUSPEND;
      END
       



Не помогает WHERE, т.к. вставляет одну запись из запроса, а в запросе может быть множество записей с единым значением по полю UP.
Может есть еще мысли, как вставить множество записей из запроса ?

Заранее благодарен за ответ.

Вот жеж, блин. В ступор сервер входил, потому, что, как тут правильно сказали, ты написал процедуру, которая входит в вечный цикл. Как сделать, чтобы не было вечного цикла подсказали. Как сделать, чтобы вставлял больше одной записи - тоже. Ну так сложи 1+1.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с процедурой на добавление записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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