0
(1)Employeeテーブルに値を挿入し、(2)新しい従業員の部門番号をとり、その部門が働くすべてのプロジェクトのProjectテーブルをスキャンするMySQLストアドプロシージャを作成しようとしています。 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