我想制作一些可以在许多其他存储过程中调用的可重用,有点动态的TSQL代码,但我正在努力解决如何使用SQL Server实现它。
环境是许多分布式源系统数据库,它们将拥有自己的包装器存储过程,这些过程将从公共ETLManagement DB调用这些模块化存储过程中的一些。包装器sproc将调用这些通用/可重用的sprocs中的一些(在一些动态定义的控制表上执行操作),然后是INSERT INTO语句(由源系统拥有和定义),然后再调用几个commom / re - 可用的sprocs。
一个主要障碍是我似乎无法在嵌套的sproc中声明变量,如何声明所有源系统sprocs可以读取的全局变量?
我是否正常使用普通的sproc来解决这个问题,或者有更好的方法吗?
(原谅我对TSQL编程的天真,我到目前为止一直在使用其他工具进行ETL。)
答案 0 :(得分:3)
这是一个非常全面的存储过程之间共享数据的方法列表:
答案 1 :(得分:2)
我会将全局变量的概念放入查找表中。这是你唯一的等价物。
此外,您可以考虑查看更多User Defined Functions
,因为它们可以在比SPROC更多的地方使用。本文是对优缺点的一个很好的参考:
http://www.informit.com/articles/article.aspx?p=31724
坦率地说,如果您对拥有真正的全局变量感兴趣,可能需要考虑升级到SQL Server Integration Services包。根据您的要求,这可能是您的一杯茶。