[英]How can I create a function in SQL with 2 parameters?
我正在嘗試創建一個函數,該函數將具有完成狀態的視頻的實際持續時間的總分鍾數求和,並將 UserID 作為參數。 到目前為止,這是我所擁有的,但我不知道如何為 Finished 狀態添加參數。 這來自具有 StatusID 和 StatusText 的不同狀態表。 或者我會做一個 NOT NULL 語句嗎?
CREATE FUNCTION dbo.vc_VideoRunTime(@userID int)
RETURNS int AS
BEGIN
DECLARE @returnValue int
SELECT @returnValue = DATEDIFF (n, StartDateTime, EndDateTime) FROM vc_Video
WHERE vc_Video.vc_UserID = @userID
RETURN @returnValue
END
GO
如果您的完成狀態表示為NULL
結束時間,那么您的函數就可以了:
CREATE FUNCTION dbo.vc_VideoRunTime (
@userID int
)
RETURNS int AS
BEGIN
DECLARE @returnValue int;
SELECT @returnValue = SUM(DATEDIFF(minute, v.StartDateTime, v.EndDateTime))
FROM vc_Video v
WHERE v.vc_UserID = @userID ;
RETURN @returnValue;
END;
GO
為什么? 該DATEDIFF()
將返回NULL
,如果任何一個參數為NULL
。 然后SUM()
將返回NULL
。
請注意,我將n
更改為minute
。 這更具可讀性。 (我不知道有人使用“n”選項表示“分鍾”,這讓我想到“納秒”。)
如果您確實希望函數在這種情況下返回0
,請使用COALESCE()
:
RETURN COALESCE(@returnValue, 0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.