2011-12-28 25 views
0

我有一個表,每次運行腳本時都會存儲。我的問題是,我必須在'????'中手動輸入腳本名稱,並且正在尋找一種方法,以便它自動將腳本名稱傳遞給插入語句。我當前的腳本是(參見下文)需要幫助來獲取腳本名稱作爲變量vs手動輸入


declare @ScriptName varchar(100) 

--Replace ???? with the script name being executed 
Set @ScriptName = '?????' 

insert into dbhistory (dbh_memo, dbh_user, dbh_nowversion) 
         Values(@ScriptName, 'Boss','Version 758') 

+0

你的意思是正在執行的腳本?上下文是什麼? – 2011-12-28 18:51:04

+0

正確的例子現在我會放在設置@ScriptName ='storeproc_name.sql'和表將顯示storeproc_name.sql – micheal 2011-12-28 19:05:09

回答

1

如果你正在試圖獲得該存儲過程的名稱(我不知道如果這是你的「腳本」的意思),如果這是SQL Server,您可以使用這個:

SET @ScriptName = OBJECT_NAME(@@PROCID) 
+0

這表中返回null :( – micheal 2011-12-28 19:20:31

+0

您是否在存儲過程中運行此代碼? – 2011-12-28 19:27:36

+0

nope,只是添加到腳本底部腳本改變了存儲過程或表信息我的道歉,如果我的術語是不正確的非常新手與sql – micheal 2011-12-28 19:50:57

0

你可以把你現在的查詢Ÿ成一個存儲過程:

CREATE PROCEDURE dbhistoryUpdate 
    @ScriptName varchar(100) 
AS 
BEGIN 
    INSERT INTO dbhistory (
    dbh_memo, 
    dbh_user, 
    dbh_nowversion 
) 
    VALUES (
    'Executing Script ' + @ScriptName, 
    'Boss', 
    'Version 758' 
); 
END 

然後,你可以調用它像這樣:

EXEC dbhistoryUpdate 'your_value'