0
我正在尝试编写一个MySQL存储过程,该过程将(1)将值插入到Employee表中并(2)接收新员工的部门编号,扫描部门工作的任何项目的Project表on和(3)将这些项目与雇员的SSN一起插入到Works_On表中。MySQL存储过程与光标错误
我正试图用游标来做到这一点,但仍然遇到我无法弄清楚的语法错误。当前的错误是在我声明游标的地方,但我不知道如何解决它。我已经尝试了很多东西,希望有人能够看到这个错误。
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 ;
错误代码是1064 .....在游标附近 – cisstudent123
更好的是添加注释而不是回答,首先你必须声明游标为'DECLARE cur_saving_acc CURSOR FOR',代码搞砸了,所以不知道其他问题不存在 – Susang
这是第一个问题....我混合了MySQL和SQL Server游标语法。谢谢! – cisstudent123