Ich versuche, eine gespeicherte MySQL-Prozedur zu schreiben, die (1) Werte in eine Employee-Tabelle einfügt und (2) die Abteilungsnummer des neuen Mitarbeiters übernimmt und die Projekttabelle nach Projekten durchsucht on und (3) fügt diese Projekte mit der SSN des Mitarbeiters in die Works_On-Tabelle ein.Gespeicherte MySQL-Prozedur mit Cursorfehler
Ich versuche, dies mit einem Cursor zu tun, aber immer wieder in Syntaxfehler, die ich nicht herausfinden kann. Der aktuelle Fehler ist an dem Punkt, an dem ich den Cursor deklariere, aber ich habe keine Ahnung, wie ich ihn beheben soll. Ich habe einiges versucht und hoffe, dass jemand den Fehler sehen kann.
Use Company
DELIMITER //
Create Procedure SP_Insert_NewEmployee
(
IN fname varchar(30),
IN minit char(1),
IN lname varchar(30),
IN ssn char(9),
IN bdate date,
IN address varchar(50),
IN sex char(1),
IN salary decimal(10,1),
IN super_ssn char(9),
IN dno int
)
Begin
Declare projectNumber Integer;
Declare myCursor2 = CURSOR FOR
SELECT Pnumber
FROM PROJECT
Where Dnum = @dno;
#Insert into Employee
Insert into EMPLOYEE
(
Fname,
Minit ,
Lname ,
Ssn ,
Bdate ,
Address ,
Sex,
Salary ,
Super_ssn,
Dno
)
Values
(
$fname ,
$minit ,
$lname,
$ssn ,
$bdate ,
$address ,
$sex ,
$salary ,
$super_ssn ,
$dno
);
END
#Find projects by new employee's dept
OPEN myCursor2;
FETCH NEXT
FROM myCursor2
INTO
projectNumber
WHILE @@FETCH_STATUS = 0
BEGIN
Insert Into WORKS_ON
Values
(
ssn,
projectNumber,
0
)
FETCH NEXT
FROM myCursor2
INTO
projectNumber
END
CLOSE myCursor2;
DEALLOCATE myCursor2;
END
END
//
DELIMITER ;
Der Fehlercode ist 1064 ..... in der Nähe von Cursor für – cisstudent123
Besser, Kommentar statt zu beantworten, zuerst müssen Sie den Cursor deklarieren als 'DECLARE cur_saving_acc CURSOR FÜR', der Code ist durcheinander, so nicht sicher, ob andere Probleme existiert nicht – Susang
Das war das erste Problem .... Ich verwechselte MySQL und SQL Server Cursorsyntax. Vielen Dank! – cisstudent123