2017-07-08 89 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應用層如此'日期'列應該沒有任何影響..可能是錯的只是我的猜測 –