2011-12-28 23 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'