Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > Insert записи в цикле


Автор: botanik 1.12.2009, 12:17
помогите плиз молодому не опытному
Что не так
Код

 for i in 22..100022 loop
      insert into public.printefileids (id, efileid) values (i, 122635);
    end loop;
language 'plpgsql';




pgAdmin 3 выдает ошибку:

ERROR:  syntax error at or near "for"
LINE 1:     for i in 22..100022 loop
            ^

********** Ошибка **********

ERROR: syntax error at or near "for"
SQL state: 42601
Характеристика:5

Автор: DimW 1.12.2009, 13:08
а перед началом цикла что? может точку с запятой перед циклом не поставил?
вот это у тебя работает?
Код

FOR i IN 1..10 LOOP
    RAISE NOTICE ''i is %'', i;
END LOOP;

Автор: botanik 1.12.2009, 13:16
В запросе больше ничего нет абсолютно

Автор: DimW 1.12.2009, 13:30
Цитата(botanik @  1.12.2009,  13:16 Найти цитируемый пост)
В запросе больше ничего нет абсолютно
  smile 
http://postgresql.ru.net/manual/plpgsql-structure.html

Автор: botanik 1.12.2009, 20:34
Код

CREATE FUNCTION cycle () RETURNS void AS'
DECLARE
h BIGINT:=2;
query TEXT;
BEGIN 
WHILE (h < 1000182) LOOP
query:="INSERT INTO printe (id, file) VALUES (h, 122635)";
EXECUTE query;
h:=h+1;
END LOOP;
END;
'LANGUAGE 'plpgsql';


В результате долгих мучений получил вышеуказанный код, но результата нет. Строки в таблицу не попадают.  smile 

Автор: DimW 2.12.2009, 14:52
Цитата(botanik @  1.12.2009,  20:34 Найти цитируемый пост)
вышеуказанный код

да не про это я вам толкую. по ссылке в первую очередь написано:
Цитата

A block is defined as: 

[ <<label>> ]
[ DECLARE
    declarations ]
BEGIN
    statements
END [ label ];


ну т.е.
Код

begin
  FOR i IN 1..10 LOOP
      RAISE NOTICE ''i is %'', i;
  END LOOP;
end;


Цитата(botanik @  1.12.2009,  20:34 Найти цитируемый пост)
В результате долгих мучений получил вышеуказанный код


Код

CREATE FUNCTION cycle() RETURNS void AS $$
DECLARE  
  h BIGINT := 2;
BEGIN
  WHILE (h < 1000182)
  LOOP
    INSERT INTO printe (id, file) VALUES (h, 122635);
    h := h + 1;
  END LOOP;
END;
$$ LANGUAGE plpgsql;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)