簡體   English   中英

如何在帶有 2 個參數的 SQL 中創建函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM