为什么这个Query不返回任何结果

时间:2013-05-04 23:45:02

标签: sql

我只想更新员工离开工作的时间

create proc [dbo].[upensraf]
@empl1 varchar , 
@ensraf time
as
update dbo.Elamal_elyome 
set Elanseraf=@ensraf
where  ID = (
    select (max(dbo.Elamal_elyome.ID)) 
    from dbo.Elamal_elyome  
    where employee=@empl1
)

1 个答案:

答案 0 :(得分:2)

您需要声明@ empl1 varchar变量的大小 - 在不定义大小的情况下,它会尝试搜索具有单个字符的员工(如果您尝试更新的话,这将有效)。更改大小以匹配表定义中的内容 - 我在下面的示例中使用了100:

create proc [dbo].[upensraf]
@empl1 varchar(100) , 
@ensraf time
as
update dbo.Elamal_elyome 
set Elanseraf=@ensraf
where  ID = (
    select (max(dbo.Elamal_elyome.ID)) 
    from dbo.Elamal_elyome  
    where employee=@empl1
)

这是一个有效的SQL Fiddle