我正在制作一个SP,这是我第一次接受用户输入。
该脚本的目的是生成一个不值班的员工列表。在生成的列表正确的意义上,它可以工作。虽然SP没有
我遇到的问题,一旦我将其创建为SP然后执行它,就会出现错误消息,这是因为日期周围没有所需的单引号。
这是SP代码:
CREATE PROCEDURE List_of_Staff @var_shiftdate DATE
AS
SELECT DISTINCT
FirstName,
LastName,
Location,
Grade
FROM Vw_My_Staff_View
WHERE Location LIKE 'Hospital_Ward_1'
AND StaffID NOT IN
(SELECT StaffId FROM Tbl_List_of_Shifts WHERE ShiftDate = @var_shiftdate
AND ShiftType not in ('Day Off', 'TOIL')
AND ShiftStatus IN ('Assigned','Redeployed'))
ORDER BY LastName
GO
错误讯息是:
Msg 102,Level 15,State 1,Line 5 “ - ”附近的语法不正确。
尝试执行SP的结果代码是这样的 - 并且在日期周围没有单引号。
USE [My_Database]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[List_of_Staff]
@var_shiftdate = 2017-05-05
SELECT 'Return Value' = @return_value
GO
我想知道我能做什么,以便用户无需在SP要求变量的日期输入单引号。
谢谢:)
答案 0 :(得分:1)
错误 日期应该用单引号
USE [My_Database]
GO
Create table #temp(value int)
insert into #temp
EXEC [dbo].[List_of_Staff] '2017-05-05'
SELECT * from #temp
drop table #temp
GO