创建执行代码的函数

时间:2012-07-25 11:38:36

标签: sql-server tsql function ssis

我通常不会使用函数来执行代码,但我的老板坚持要求我使用函数而不是SP来执行SSIS包。真的不知道为什么!

我需要创建一个执行以下代码的函数,用户只需要在调用函数时提供SSIS包名称。

declare @cmdtest varchar(200)
set @cmdtest = 'dtexec /f "C:\Users\Desktop\testpackage.dtsx"'
exec master..xp_cmdshell @cmdtest

上面的代码将执行我的testpackage.dtsx,现在我的函数必须要求SSIS包名称,并且必须是varchar。

由于我没有了解功能,有人可以告诉我这样做的最佳方法是什么。我假设需要使用标量函数?

1 个答案:

答案 0 :(得分:3)

也许是这样的:

CREATE FUNCTION dbo.ExecutePackage
(
    @PackageName VARCHAR(30)
)
RETURNS BIT
AS 
BEGIN
    DECLARE @cmdtest varchar(200);
    SET @cmdtest = 'dtexec /f "C:\Users\Desktop\'+ @PackageName + '.dtsx"';
    EXEC master..xp_cmdshell @cmdtest;

    RETURN 1; --you could do some error checking and return either true or false - just a thought
END

然后将其作为

执行
SELECT dbo.ExecutePackage('testpackage');