4

テーブルにアイテムが存在するかどうかを確認するためにT-SQLに問題がありますが、エラーメッセージが表示されます

メッセージ178、レベル15、状態1、2行目戻り値のあるRETURNステートメントは、このコンテキストでは使用できません。メッセージ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
4

3 に答える 3

6

Returnは、ストアドプロシージャ/ユーザー定義関数内で機能します。

単純なtsqlは単なるコマンドのバッチです。RETURNの代わりにSELECTを書きたいと思います。

于 2012-09-07T14:26:41.657 に答える
3

returnストアドプロシージャと関数のみを呼び出すことができます。これもそうではないと思います。

于 2012-09-07T14:26:46.617 に答える
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
于 2012-09-07T14:29:30.947 に答える