Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Виктория от 11 Июля 2023, 11:53:52

Название: SQL-запросы в отчетах
Отправлено: Виктория от 11 Июля 2023, 11:53:52
Здравствуйте.
Создала свой источник данных и напрямую пишу запросы в отчетах.
Почему в воркбенче проходит вот такая строчка
Код: (sql)
SET @rank=-1;

CREATE TEMPORARY TABLE table2_2 AS
(Select @rank:=@rank+1 AS N1,Timestamp,Value from trends_data WHERE
, а в редакторе отчета фатальная ошибка?
Название: Re: SQL-запросы в отчетах
Отправлено: Simple-Scada от 12 Июля 2023, 13:00:29
Здравствуйте.

В системе отчетов "@имя" в запросе используется для взятия значения переменной отчета (таким образом в запрос можно подставлять значение какой-либо переменной отчета, как в этом примере (https://simple-scada.com/help/report/rep-user-data.html)). Поэтому сложные запросы с локальными переменными нужно выносить в отдельную хранимую процедуру (при необходимости с параметрами) и вызывать её из системы отчетов. Т.е. можно через MySQLWorkbench создать хранимую процедуру с нужным кодом, а затем в отчете вызывать её, например так:
Код: (sql)
call my_procedure;
Название: Re: SQL-запросы в отчетах
Отправлено: Виктория от 12 Июля 2023, 13:02:58
Подскажите как создать можно хранимую процедуру и потом как именно к ней обратиться. Может у вас пример какой-то есть.
Название: Re: SQL-запросы в отчетах
Отправлено: Simple-Scada от 12 Июля 2023, 13:13:41
Удобнее всего через MySQLWorkbench, просто кликнуть ПКМ раздел "Stored Procedures" в БД и выбрать "Create Stored Procedure", нужный код поместить между BEGIN..END. Протестировать вызов процедуры также можно через MySQLWorkbench, вызовом "call имя_процедуры". Подробное описание со скринами есть здесь (https://bestprogrammer.ru/izuchenie/sozdanie-hranimyh-protsedur-v-mysql).
Название: Re: SQL-запросы в отчетах
Отправлено: Виктория от 13 Июля 2023, 07:22:36
Спасибо большое. Все получилось :)