Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Функция + INSERT INTO = Ошибка / 10 сообщений из 10, страница 1 из 1
29.09.2016, 14:40
    #39317873
Leopolis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция + INSERT INTO = Ошибка
Всем привет!
С 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
29.09.2016, 15:15
    #39317919
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция + INSERT INTO = Ошибка
Leopolis,

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

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

Да строка, Подскажите пожалуйста правильный синтаксис в этой ситуации
...
Рейтинг: 0 / 0
29.09.2016, 15:55
    #39317969
Leopolis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция + INSERT INTO = Ошибка
После екранирования 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
29.09.2016, 17:34
    #39318046
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция + INSERT INTO = Ошибка
Leopolis,

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

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

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

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

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

qwwqLeopolis,

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

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

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

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


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