1
我對SQL Server很新。在這裏,我嘗試使用CASE語句創建UDF,以根據輸入的各種訂單日期從數據庫STRDAT獲取訂單狀態。 下面是代碼:用戶定義的函數與CASE語句
USE STRDAT
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID(N'dbo.GetOrderStatus', N'FN') IS NOT NULL
DROP FUNCTION dbo.GetOrderStatus ;
GO
CREATE FUNCTION dbo.GetOrderStatus(@lngOrderID int)
RETURNS varchar(50)
AS
BEGIN
WITH MyData AS
(
SELECT
ReservedDate AS Res,
ConfirmedDate AS Conf,
ProcessedDate AS Procs,
ProducedDate AS Prod,
ShippedDate AS Ship,
RefusingReason AS Refs,
CancelledDate AS Canc
FROM tbl_Order
WHERE OrderID = @lngOrderID
)
SELECT GetOrderStatus= CASE
WHEN res IS NULL AND conf IS NULL AND PROCS IS NULL AND PROD IS NULL AND Ship IS NULL AND Canc IS NULL AND Refs is null
THEN 'Naujas'
WHEN NOT Canc IS NULL
THEN 'Atšauktas'
WHEN NOT Refs IS NULL
THEN 'Atmestas'
WHEN NOT Ship IS NULL
THEN 'Atkrautas'
WHEN NOT prod IS NULL
THEN 'Pagamintas'
WHEN NOT Procs IS NULL
THEN 'Apdirbtas'
WHEN NOT Conf IS NULL
THEN 'Patvirtintas'
ELSE 'N/A'
END
FROM MyData
END
這是我的第一個功能,我無法解釋,爲什麼我得到的線CREATE FUNTION ...
錯誤:
Select語句包括在一個功能無法將數據返回到客戶端。
@litpost,如果這個解決您的問題,請你接受它作爲一個解決方案嗎? – Mukund 2014-10-10 07:14:55
我會評價你的答案,但不會導致仍然有太低的評級在論壇上。不管怎樣,謝謝你! – litpost 2014-10-13 13:34:13