SP中使用的日期缺少单引号

时间:2017-05-26 11:36:42

标签: sql sql-server stored-procedures

我正在制作一个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要求变量的日期输入单引号。

谢谢:)

1 个答案:

答案 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