Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка в MySQL Stored Procedure Неочакван знак:

Това е много досаден проблем, свързан със синтаксиса на MySQL:някъде във вашата процедура има TAB, водещ до този проблем с анализа:Използвайте интервали само за всякакви отстъпи или подравняване.

Моята версия (MariaDB 10.x) също не харесва началото на вашата процедура с DECLARE поръчка, така че аз също актуализирах това. Вижте дали все още отговаря на целта ви на това място.

Коригираната процедура, която моята база данни създава без синтактични грешки:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_gauge_values` (in maxdate timestamp, in tagid int)

BEGIN
declare finished boolean;
declare line_timestamp timestamp;
declare line_tagid int;
declare line_name varchar(50);
declare line_value varchar(50);
DECLARE cid CURSOR FOR 
SELECT MAX(hd.timestamp), hd.tag_id
FROM dashboard_lines dl
JOIN historical_data hd ON hd.tag_id = dl.gauge_tag_id
WHERE (hd.timestamp is null OR hd.timestamp <= maxdate)
AND (dl.gauge_tag_id is null OR dl.gauge_tag_id = tagid);       
declare continue handler for not found set finished=true;
set finished=false;
DROP TABLE IF EXISTS GAUGE_VALUES_TEMP;
CREATE TABLE GAUGE_VALUES_TEMP (
LINE_NAME varchar(255),
LINE_VALUE varchar(50)
);  
open cid;
start_loop: loop            
fetch cid into line_timestamp, line_tagid;    
if finished <> false then 
leave start_loop; 
else    
insert into gauge_values_temp (line_name, line_value) 
select ol.name, hd.value
from dashboard_lines dl
join operation_lines ol on ol.line_id = dl.line_id
join historical_data hd on hd.tag_id = dl.gauge_tag_id
where dl.gauge_tag_id = line_tagid;                        
end if;                
end loop;
close cid;
select * from gauge_values_temp;
END
$$



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CONV() функция в снежинка

  2. MySQLNonTransientConnectionException:Не можа да се създаде връзка със сървъра на базата данни

  3. Как мога да съпоставя списък, разделен със запетая, със стойност?

  4. Как да използвам буквено-цифрови полета с клауза BETWEEN в Mysql?

  5. Как могат да се проверят индексите, ако съществуват при миграция на Laravel?