2017-07-08 87 views
0

因此,我试图创建一个小规模工资系统作为练习,利用WPF作为接口并连接到SQL Server数据库。我正在设置存储过程,并试图安排一个将新的工作班次添加到数据库。它为用户的姓名和姓氏输入用户输入,然后插入一个新班次,输入手动输入的详细信息,并从tblEmployee表中插入一个员工ID,其中员工的名和姓与用户输入的第一个和最后一个姓名相同和姓氏。问题在于它给了我最后一行不正确的语法错误,我似乎无法弄清楚为什么。尝试在插入语句中同时包含select语句和用户输入

CREATE PROCEDURE NewShift(
@LName varchar(50), 
@FName varchar(50), 
@Date date, 
@ShiftStart time, 
@ShiftEnd time, 
@HoursWorked decimal(18,2) 
) 
AS 
BEGIN 

INSERT INTO tblShifts(
EmpID, 
Date, 
ShiftStart, 
ShiftEnd, 
HoursWorked 
) 


SELECT EmpID, @Date, @ShiftStart, @ShiftEnd, @HoursWorked 
FROM tblEmployee WHERE [email protected] AND [email protected] 
+1

末尾缺少'END'关键字 –

+0

Welp。这是固定的。也是我的提示,不要做任何需要思考的事情。干杯! –

回答

2

DATE是一个关键词,可能保留(视版本和ODBC预留),所以它是一个列一个糟糕的名字:

INSERT INTO tblShifts(EmpID, [Date], ShiftStart, ShiftEnd, HoursWorked) 
    SELECT EmpID, @Date, @ShiftStart, @ShiftEnd, @HoursWorked 
    FROM tblEmployee 
    WHERE LName = @LName AND FName = @FName; 

当然,你还需要END用于存储过程的结尾。

+0

这是否有什么原因让你失望? –

+0

OMG有人downvoted戈登的答案我不会允许这种情况发生:D .. +1以取消downvote,因为原来的问题处理 –

+0

我能想到的一个原因是,因为它是一个过程,它将被称为exec应用层如此'日期'列应该没有任何影响..可能是错的只是我的猜测 –