2015-11-25 20 views
1

有人可以向我解釋下一個過程的作用嗎?SQL過程含義

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以及它如何影響表。

+5

GETDATE()剛剛返回當前的日期和時間。這就是你在遇到問題?因爲這是一個瘋狂的黑客一個存儲過程... – RBarryYoung

+0

在這種情況下'GETDATE()'被用來調整'TestRun s表'startAt'和'endAt'列。 – PHPglue

+0

和這個程序的目的是什麼? – Nero

回答

1

該程序的目的在於 EXEC @currentName

我相信這是某種形式的性能測試,在那裏你看多少時間的程序是如何進行運行 我猜你是通過某種由-分離過程名稱和分析每個程序並運行它們。

在運行它們,你正在錄製你的使用GetDate一切之後的時間開始運行時,使用GetDate運行結束。(由於GetDate給你當前時間,差異會告訴你多久沒需要多運行的所有程序。

你記錄這些信息在audit表稱爲TestRuns