Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd procedury składowanej MySQL Nieoczekiwany znak:

Jest to bardzo irytujący problem związany ze składnią MySQL:gdzieś w procedurze znajduje się TAB prowadząca do tego problemu z analizowaniem:używaj spacji tylko do wcięcia lub wyrównania.

Moja wersja (MariaDB 10.x) również nie lubi rozpoczęcia procedury za pomocą DECLARE zamówienie, więc również to zaktualizowałem. Sprawdź, czy nadal pasuje do Twojego celu w tej lokalizacji.

Dostosowana procedura, którą moja baza danych tworzy bez błędów składniowych:

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. pobierz tablicę wartości kolumn w codeigniter

  2. dlaczego to zapytanie MySQL generuje nieprawidłowe numery wierszy?

  3. Pobierz wiersze pogrupowane według godzin za pomocą MySQL

  4. Jak połączyć się z MySQL za pomocą Microsoft .NET

  5. Zrzuć osadzoną bazę danych mysql do pliku tekstowego SQL