Sql server 在T-SQL函数中创建解释日志

Sql server 在T-SQL函数中创建解释日志,sql-server,tsql,Sql Server,Tsql,我在MS SQL Server中有一些函数,它返回一些计算值。但我必须向最终用户解释这个值是如何计算的。换句话说,我必须将一些计算日志保存到数据库中。你能给我建议最好的方法吗? 在T-SQL中 我无法在函数中使用RCUD(创建、更新、删除)操作 谢谢。您可以将该函数重写为返回两列的表值函数:结果和解释。例如,代替此功能: CREATE FUNCTION dbo.Factorial(@N TINYINT) RETURNS BIGINT AS BEGIN DECLARE @R BIGINT,

我在MS SQL Server中有一些函数,它返回一些计算值。但我必须向最终用户解释这个值是如何计算的。换句话说,我必须将一些计算日志保存到数据库中。你能给我建议最好的方法吗? 在T-SQL中

我无法在函数中使用RCUD(创建、更新、删除)操作


谢谢。

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

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函数dbo.Factorial(@N TINYINT)返回BIGINT
作为开始
声明@R BIGINT,@I TINYINT
设置@R=1
设置@I=2

而@IDid你指的是创建、更改和删除?不,我指的是插入、更新、删除。谢谢。这是个有趣的主意。虽然我希望函数的行为有很多字符串“解释”,但我认为我可以处理这些不便之处。
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)