2017-11-29 1 views
0
DELIMITER // 
CREATE PROCEDURE final_arrest() 
AS 
cursor c_final_arrest is 
select greatest(Week 1,Week 2)as a , 
greatest(Week 1,Week 3) as b , 
greatest(Week 2,Week 3) as c 
from arrest 
for update; 
c_a number; 
c_b number; 
c_c number; 
c_sum number; 
c_avg number; 
begin 
open c_final_arrest; 
loop 
fetch c_final_arrest into c_a,c_b,c_c; 
exit when c_final_arrest % notfound; 
if(c_a != c_b)then 
c_sum := c_a + c_b; 
else 
c_sum := c_a + c_c; 
end if; 
c_avg := c_sum/2; 
update arrest set Avg=c_avg 
where current of c_final_arrest; 
end loop; 
close c_final_arrest; 
end // 
DELIMITER ; 

Kann mir jemand dabei helfen .. !! Ich bin nicht in der Lage, diese Prozedur in mysql zu erstellen .... Halten Sie den FehlerFehler in der Syntax der gespeicherten Prozedur

1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung zu Ihrer MariaDB Server-Version für die richtige Syntax entspricht in der Nähe zu verwenden 'AS

Cursor c_final_arrest ist wählen größten (Woche 1, Woche 2) als, größte (W' in Zeile 2

ich bin nicht sicher, was zu tun ... Hilfe

Wenn jemand einen alternativen Code geben kann, es wäre schön ... !!!

+0

setzen 'Symbol auf Felder –

+0

Immer noch der gleiche Fehler –

+0

was das? "AS Cursor c_final_arrest ist" Ich glaube nicht, dass es dort sein soll –

Antwort

0

es ist schon eine Weile her, seit ich gespeicherte Prozeduren geschrieben hätte - aber ich würde schau dir folgendes an:

1) Schaue genau auf Abstand - dh Ändere "Größte (Woche 1, Woche 2) als" bis "Größte (Woche 1, Woche 2) als"

2) "könnte" reserviert werden - würde ich verwenden beschreibende Spaltennamen 3) Spaltennamen "Woche n" enthalten ein Leerzeichen. Sie benötigen möglicherweise Anführungszeichen "" oder Klammern [] um den Spaltennamen wie "Größte ([Woche 1], [Woche 2]) als"

+0

Aber der Fehler ist am ersten AS .... direkt nach der Anweisung create procedure. –

+0

True - das ist, wo der Compiler zuerst bestimmt, gibt es ein Problem. Für mich heißt das, dass das Problem irgendwo in dieser Zeile liegt - aber nicht notwendig, wo der Compiler das Problem bemerkt hat. – knightgambit

+0

Umbenennung und Abstand erzeugen ebenfalls den gleichen Fehler –

Verwandte Themen