2009-06-02 60 views
2

我正在编写一个运行接近2000行代码的相当长的SQL脚本。由于理解长文字变得非常困难,我想将其分解为逻辑单元并将它们分离出来放入其他SQL文件中。分解SQL脚本

这样做的最好方法是什么?每个逻辑单元都需要成为一个存储过程吗?也许是UDF?

回答

2

利用存储过程和函数。如果你在做纯SQL,那么没有更好的代码逻辑单元。此外,它使维护/编辑代码变得更容易。这就是说,如果你的脚本很长,你可能想看看你在做什么,并考虑另一种脚本语言,甚至是C#/ LINQ。有时候将所有内容全部保存在SQL中是有意义的,有时候你会强迫某些东西进入SQL,但只有你可以做出这样的决定。另外,C#或其他脚本语言也很容易与源代码控制集成。只需要考虑一下!

0

首先,2000行的SQL并不是文件中过多的数量(DDL经常为适中的大型数据库运行这么多或更多)。但是,在单个进程中使用太多了!解决这个问题的方法确实是将逻辑组件分解成单独的过程。除非你有一个特定的瓶颈来克服或在SQL中不容易完成的操作,否则你将不需要UDF。

最后一句忠告:考虑通过视图简化您的数据访问。

顺便说一句:你想用这么大的程序来完成什么?我使用T-SQL做了大量工作,而且我从来没有接近2000行代码!

+0

我在写一个deploymnet脚本,通过存储过程填充大量表。部署脚本正在调用不同的SP集 – 2009-06-02 20:54:49

0

你用什么来打破它可以根据你在做什么改变。

这与任何编程语言类似,广告脚本/功能太大,需要分解。

如果您的脚本由于相同或相似的查询而较大,则可以通过将这些查询添加为视图来减少脚本。

存储过程和用户​​定义的函数也是另一个好方法,取决于你的代码在做什么。

0

这似乎是一批批的很多代码。

将每个逻辑步骤/过程(即创建订单/调度订单/注册客户)分解为单独的存储过程。您可能会发现创建一个流程图并使用它来帮助分解您的T-SQL代码批处理的位置很有用。

如果您尝试使用T-SQL然后将这样的操作,以托管代码,如CLR函数等

0

把它分解成多个SP进行计算逻辑,增加的try-catch块和错误处理(记,除以0不是可能的错误),并建立一个工作按顺序执行每一个工作。