【问题标题】:T-SQL RETURN is not workingT-SQL 返回不起作用
【发布时间】:2012-09-07 22:45:02
【问题描述】:

我的 T-SQL 有问题,查看项目是否存在于表中,但我有错误消息

Msg 178, Level 15, State 1, Line 2 带有返回的 RETURN 语句 在这种情况下不能使用 value。消息 178,第 15 级,状态 1,线路 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

【问题讨论】:

  • 你在网上查到这个错误信息了吗?你想在哪里使用它?在函数或存储过程中?请发布整个代码
  • 一般return只能用来表示成功或失败。您应该使用输出参数来发送信息或选择。

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


【解决方案1】:

Return 在存储过程/用户定义的函数中起作用。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 不完全正确 - 您可以在过程之外使用 return,但不能与要返回的 agument 一起使用。
    • ALTER PROCEDURE [dbo].[CheckTimesheetIsEXISTS_forUser] 这是一个程序
    【解决方案3】:

    试试这个:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多