T-SQL RETURN无效

时间:2012-09-07 14:23:32

标签: sql tsql sql-server-2008-r2

我的T-SQL有问题,看看桌子上的项目是否有EXISTS但是我有错误信息

  

Msg 178,Level 15,State 1,Line 2带返回的RETURN语句   值不能在此上下文中使用。 Msg 178,Level 15,State 1,Line   4不能在此使用带返回值的RETURN语句   上下文。

IF EXISTS(SELECT COUNT(timesheetID)
FROM [TaskManagementSystem_DB].[dbo].[Timesheet_entry]
WHERE userID ='12'  AND CONVERT(date, startTimeStamp)=CONVERT(date, getdate())) 
    RETURN 1
else
RETURN 0

整个代码:

ALTER PROCEDURE [dbo].[CheckTimesheetIsEXISTS_forUser]  @UserID uniqueidentifier

AS 
BEGIN    
-- SET NOCOUNT ON added to prevent extra result sets from   
-- interfering with SELECT statements.  SET NOCOUNT ON;

IF EXISTS(SELECT COUNT(timesheetID) FROM 
 [TaskManagementSystem_DB].[dbo].[Timesheet_entry] 
 WHERE userID
  ='3fd971f7-e6e8-40fe-a90d-a7c9df8bf7b5'  
 AND CONVERT(date, startTimeStamp)=CONVERT(date, getdate()))



  RETURN 1 
else 
 RETURN 0 
END

3 个答案:

答案 0 :(得分:6)

返回在存储过程/用户定义函数内部工作。

简单的tsql只是一批命令。我想你想写SELECT而不是RETURN。

答案 1 :(得分:3)

您只能在存储过程和函数中调用return。我假设这不是。

答案 2 :(得分:2)

试试这个:

ALTER PROCEDURE [dbo].[CheckTimesheetIsEXISTS_forUser]  @UserID uniqueidentifier

AS 
BEGIN   

SELECT CASE WHEN COUNT(timesheetID) > 0 THEN 1 ELSE 0 END AS isExists
    FROM [TaskManagementSystem_DB].[dbo].[Timesheet_entry]
    WHERE userID = @UserID  AND CONVERT(date, startTimeStamp)=
     CONVERT(date, getdate())

END