SQL过程含义

时间:2015-11-25 00:17:30

标签: sql-server

有人可以向我解释下一个程序的作用吗?

CREATE PROCEDURE [add_100*Clients-runView2-del_50*Reductions] AS
DECLARE @procName NVARCHAR(100) = OBJECT_NAME(@@PROCID), @currentName NVARCHAR(50)
DECLARE @index int

INSERT INTO TestRuns (Description, StartAt, EndAt)  
VALUES ('Add Clients - View 2 - Delete Reductions', GETDATE(), null)
DECLARE @currentID int
SET @currentID = (SELECT SCOPE_IDENTITY())

SET @index = CHARINDEX('-', @procName) 
WHILE @index > 0
BEGIN
    SET @currentName = SUBSTRING(@procName, 1, @index-1)
    SET @procName = SUBSTRING(@procName, @index+1, (LEN(@procName) - @index))
    SET @index = CHARINDEX('-', @procName)
    EXEC @currentName       
END
SET @currentName = @procName
EXEC @currentName

UPDATE TestRuns
SET EndAt = GETDATE()
WHERE TestRunID = @currentID

GO

我无法理解getDate是什么以及它如何影响表格。

1 个答案:

答案 0 :(得分:1)

程序的目的在于 EXEC @currentName

我相信这是某种性能测试,您可以看到程序运行所需的时间 我猜你传递的是由-分隔的某种过程名称,并解析每个过程并运行它们。

在运行它们时,您正在使用GetDate记录您的时间开始,在运行完所有内容后,使用GetDate结束运行。(如GetDate为您提供当前时间,差异将告诉你运行所有程序需要多长时间。

您将该信息记录在名为audit的{​​{1}}表中。