可重用的SQL Server存储过程;筑巢;全局变量

时间:2010-02-12 19:52:23

标签: sql-server tsql stored-procedures etl

我想制作一些可以在许多其他存储过程中调用的可重用,有点动态的TSQL代码,但我正在努力解决如何使用SQL Server实现它。

环境是许多分布式源系统数据库,它们将拥有自己的包装器存储过程,这些过程将从公共ETLManagement DB调用这些模块化存储过程中的一些。包装器sproc将调用这些通用/可重用的sprocs中的一些(在一些动态定义的控制表上执行操作),然后是INSERT INTO语句(由源系统拥有和定义),然后再调用几个commom / re - 可用的sprocs。

一个主要障碍是我似乎无法在嵌套的sproc中声明变量,如何声明所有源系统sprocs可以读取的全局变量?

我是否正常使用普通的sproc来解决这个问题,或者有更好的方法吗?

(原谅我对TSQL编程的天真,我到目前为止一直在使用其他工具进行ETL。)

2 个答案:

答案 0 :(得分:3)

这是一个非常全面的存储过程之间共享数据的方法列表:

http://www.sommarskog.se/share_data.html

答案 1 :(得分:2)

我会将全局变量的概念放入查找表中。这是你唯一的等价物。

此外,您可以考虑查看更多User Defined Functions,因为它们可以在比SPROC更多的地方使用。本文是对优缺点的一个很好的参考:

http://www.informit.com/articles/article.aspx?p=31724

坦率地说,如果您对拥有真正的全局变量感兴趣,可能需要考虑升级到SQL Server Integration Services包。根据您的要求,这可能是您的一杯茶。

http://msdn.microsoft.com/en-us/library/ms141026.aspx