вот такой код:
create procedure spisok_rabot (num INT, date1 DATE, date2 DATE)
language sql
as $$;
declare
work_type VARCHAR(20);
count int;
set work_type= (select work_type, count(work_type)
from works where number=num and date_in between date1 and date2
group by work_type);
set count=(select count(work_type)
from works where number=num and date_in between date1 and date2
group by work_type);
$$;
вот такая ошибка:
ERROR: ОШИБКА: ошибка синтаксиса (примерное положение: "VARCHAR")
LINE 5: work_type VARCHAR(20);
во видимому, я не правильно объявляю тип переменной, но иного способа я не нашел. Помогите, пожалуйста
ERROR: ОШИБКА: тип "work_type" не существует
LINE 7: set work_type= (select work_type, count(work_type)
На самом деле не знаю с чем связано, я же объявил этот тип
Руслан ., да, так работает. У меня же не может быть несколько значений в переменной work_type?
Изначально была задача записать все значения из запроса в новую табличку с помощью процедуры, я теперь плохо понимаю как это сделать.
(select work_type, count(work_type)
from works where number=num and date_in between date1 and date2
group by work_type);
и получившуюся табличку занести в другую через insert.
Если намекнете как это сделать, буду очень благодарен!
Михаил Машканцев, можно попробовать создать временную таблицу и залить туда результат запроса, а затем из неё перелить куда нужно.
create temp table temp_table(work_type varchar(20), count int);
insert into temp_table
(
work_type,
count
)
select work_type,
count(work_type)
from works
where number=num
and date_in between date1 and date2
group by work_type;
А можете посмотреть что с триггером не так?
create trigger updater
AFTER INSERT
ON done_cars
for each row
update table2 set table2.counting=table2.counting+1 where table2.workshop_id=new.number;
вот ошибка:
ERROR: ОШИБКА: ошибка синтаксиса (примерное положение: "update")
LINE 5: update table2 set table2.counting=table2.counting+1 where ta...
Михаил Машканцев, поле которое изменяется в update нужно указывать без алиаса:
update table2
set counting = table2.counting+1
where table2.workshop_id = new.number;