powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Функция + INSERT INTO = Ошибка
10 сообщений из 10, страница 1 из 1
Функция + INSERT INTO = Ошибка
    #39317873
Leopolis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
С PostgreSQL незнаком, но мне нужно написать функцию insert - update,

pgAdmin возвращает ошибку ERROR: syntax error at or near "INTO". Помогите пожалуйста, понять, где ошибка...

Код: plsql
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE OR REPLACE FUNCTION insert_update_pietro_plan( sTmp text, sKey text )
  RETURNS void AS
$BODY$
declare
  _plan_odczytany integer;
  _lotus_unid text;
  _lotus_value text;
  r record;
  fIndex integer;
  lIndex integer;
  iKey text;
  _insert_str text;
  _update_str text;

begin
  _lotus_unid := ( strMiddle( sTmp, '<' & sKey & '>', '</' & sKey & '>') )  ;
  _plan_odczytany := ( select count(*) from pietro_plan where parent_id = _lotus_unid )  ;
if _plan_odczytany = 0  then

_insert_str := ( INSERT INTO pietro_plan VALUES ('%parent_id%' , '%zam_nr%' ,  '%zam_klient%' , '%mat_ilosc_rol%' , '%mat_indeks_id%' , '%wyk%' , '%mat_cecha_szer%'
, '%mat_cecha_dlug%', '%mat_cecha_gram%', '%mat_norma_zuzycia_obl_kg%', substring('%mat_data_rok%',1,4), substring('%mat_data_msc%',1,2), substring('%ws_data_start_pelny%',1,2)
, substring('%ws_hour_start_pelny%',1,10), '%parent_indeks_id%', '%parent_indeks_opis%', to_date('%@Created%', 'YYYY-MM-DD'), to_date('%data_realizacji_prod%', 'YYYY-MM-DD'), '%unid_id%')
 );

FOR r IN ( select trim( unnest( string_to_array(sTmp, '</br>') ) ) as res ) LOOP

	lIndex := (SELECT position('>' in r.res));
        iKey := (select substring ( r.res, 2, lIndex - 2 ));
        _lotus_value:= strMiddle( r.res, '<' & iKey & '>', '</' & iKey & '>'); 

        _insert_str := ( replace( _insert_str, '%' & iKey &'%', _lotus_value) );
        
    END LOOP;

    select _insert_str;

else

update pietro_plan set data_realizacji_prod = to_date( strMiddle( sTmp, '<data_realizacji_prod>', '</data_realizacji_prod>'), 'YYYY-MM-DD')
where unid_id = _lotus_unid;

end if ;

end
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION insert_update_pietro_plan(text)
  OWNER TO postgres;
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39317919
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leopolis,

Если `_insert_str` это строка, то надо всё заключать в одинарные кавычки и экранировать таковые внутри.
Синтаксис как у вас есть — присвоение переменной SQL запроса — в принципе невозможнен в PL/pgSQL.
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39317945
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeopolisС PostgreSQL незнаком сайт знакомств
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39317956
Leopolis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorovLeopolis,

Если `_insert_str` это строка, то надо всё заключать в одинарные кавычки и экранировать таковые внутри.
Синтаксис как у вас есть — присвоение переменной SQL запроса — в принципе невозможнен в PL/pgSQL.

Да строка, Подскажите пожалуйста правильный синтаксис в этой ситуации
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39317969
Leopolis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После екранирования ERROR: function insert_update_pietro_plan(text) does not exist

Код: plsql
1.
2.
3.
4.
_insert_str := ( 'INSERT INTO pietro_plan VALUES (''%parent_id%'' , ''%zam_nr%'' ,  ''%zam_klient%'' , ''%mat_ilosc_rol%'' , ''%mat_indeks_id%'' , ''%wyk%'' , ''%mat_cecha_szer%''
, ''%mat_cecha_dlug%'', ''%mat_cecha_gram%'', ''%mat_norma_zuzycia_obl_kg%'', substring(''%mat_data_rok%'',1,4), substring(''%mat_data_msc%'',1,2), substring(''%ws_data_start_pelny%'',1,2)
, substring(''%ws_hour_start_pelny%'',1,10), ''%parent_indeks_id%'', ''%parent_indeks_opis%'', to_date(''%@Created%'', ''YYYY-MM-DD''), to_date(''%data_realizacji_prod%'', ''YYYY-MM-DD''), ''%unid_id%'')'
 );
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39318046
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leopolis,

набрали по объявлениям , блджадь

у вас 2 параметра в шапке и один -- в альтер овнере. йопрст
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39318167
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leopolis,

"Помогите пожалуйста, понять, где ошибка..."

ERROR: syntax error at or near "незнаком".
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39318321
Leopolis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwqLeopolis,
у вас 2 параметра в шапке и один -- в альтер овнере. йопрст

Все-такие умные..... Только критика только хардкор..... Программирую на другом языке, прогера на PostgreSQL нету, и я не могу познать дзен PostgreSQL за 1 день.

qwwqLeopolis,

у вас 2 параметра в шапке и один -- в альтер овнере. йопрст

Спасибо, не досмотрел
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39318413
Leopolis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поменял select _insert_str; на EXECUTE _insert_str; работает.

Всем спасибо
...
Рейтинг: 0 / 0
Функция + INSERT INTO = Ошибка
    #39318441
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeopolisПрограммирую на другом языке

ну и чем тебя не устроил известный тебе язык?
аппеляция к тому, что ты не платишь программисту postgresql, воспринимается как издевательство.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Функция + INSERT INTO = Ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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