我或许应该提到,乌国防军确实面临相当大的健康警告,并且可以根据你如何使用这些警告来造成业绩问题。
这里就是一个例子。
CREATE FUNCTION dbo.Funname ( @param INT )
RETURNS INT
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
RETURN (SELECT number FROM master.dbo.spt_values WHERE number < @param)
END
在上述例子中,我没有使用一个变数,因为它是多余的。 变量版本
BEGIN
DECLARE @Result int
SET @Result = (SELECT number FROM master.dbo.spt_values WHERE number < @param)
RETURN @Result
END
在上述两种情况下,你们都需要保证金在大多数一行返回,以避免出现错误。 例如
select dbo.Funname (-1)
Returns -32768
select dbo.Funname(0)
回归错误“恢复超过1 价值”
替代yn
BEGIN
DECLARE @Result int
SELECT @Result = number FROM master.dbo.spt_values WHERE number < @param
RETURN @Result
END
如果寄回的子库价值不止一个,这不会再造成错误,但你只是以无警告的武断结果来结束——情况更糟。
评 注 我认为,这是你们需要的。
CREATE FUNCTION dbo.getcustgrade(@custid CHAR(200))
RETURNS INT
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
RETURN
( SELECT [cust grade]
FROM ( SELECT customerid,
DENSE_RANK() OVER (ORDER BY COUNT(*) DESC) AS [cust grade]
FROM Orders
GROUP BY CustomerID
)
d
WHERE customerid = @custid
)
END