在T-SQL函数中创建说明日志

时间:2014-01-12 12:38:14

标签: sql-server tsql

我在MS SQL Server中有一些函数可以返回一些计算值。但我必须为最终用户“解释”该值的计算方法。换句话说,我必须将一些计算日志保存到数据库中。你能告诉我最好的方法吗? 在T-SQL中

我不能在函数中使用RCUD(创建,更新,删除)操作。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将该函数重写为返回两列的表值函数:结果和解释。例如,而不是此功能:

CREATE FUNCTION dbo.Factorial(@N TINYINT) RETURNS BIGINT
AS BEGIN
    DECLARE @R BIGINT, @I TINYINT
    SET @R=1  
    SET @I=2
    WHILE @I<=@N BEGIN
        SET @R=@R*@I
        SET @I=@I+1
    END
    RETURN @R  
END

GO
SELECT dbo.Factorial(5)

你可以写下这样的另一个函数:

CREATE FUNCTION dbo.FactorialExplained(@N TINYINT) 
RETURNS @Results TABLE (Result bigint, Explanation nvarchar(1000))
AS BEGIN
    DECLARE @R BIGINT, @I TINYINT, @E nvarchar(1000)
    SET @R=1  
    SET @I=2
    SET @E='1'
    WHILE @I<=@N BEGIN
        SET @R=@R*@I
        SET @E=@E+'*'+CONVERT(varchar(3),@I)
        SET @I=@I+1
    END
    INSERT INTO @Results VALUES (@R, @E)
    RETURN
END

GO
SELECT * FROM dbo.FactorialExplained(5)

勒兹