静态SQL与动态SQL相比具备很多优点,最主要的表现在两个方面:
1、 静态SQL指定具体的对象,可以避免动态SQL中隐含的错误
2、 静态SQL的分析和执行速度比动态SQL要快
所以,如果使用静态SQL可以达到目的,我们推荐用静态SQL替代动态SQL,即使需要多编写一些代码也是值得的。那么,在开发程序代码的时候,如何判定一段SQL代码究竟该采用动态SQL,还是该采用静态SQL呢?简单总结以下几个原则,供大家参考:
1、寻找消除动态SQL的机会
一般而言,想采用动态SQL实现的语句中都有不确定的因素,如果所有信息都确定,没有理由采用动态SQL来实现,SQL语句的不确定因素包括:SQL选择的字段列名不确定,选择的From表名不确定,以及Where条件中的条件字段名不确定等情况,可采用Decode, Case,以及IF ELSE来分情况写成静态SQL。
举例:
Execute immediate
‘select ‘|| p_name