|
写得不错,先表扬一下。
我发现你也用了 1=1, 前阵子在这里有过热烈讨论。
再用我这双老程序员的火眼金睛来挑几个毛病:
"静态SQL的优点是:
编译成功就表示访问的数据库对象有效并且有权限来访问数据库的对象。----- 不一定,也有AUTHID CURRENT_USER
静态SQL的性能一般要好于动态SQL" ----- 没什么道理,你举个例子看看。
尽管如此,静态SQL也有他的局限,而这些局限动态SQL却能克服。下面列举了这些局限
不知道PL/SQL中语句的全文。这些语句也许依赖于传入参数,或者需要程序进行处理而得到。 ------- 前半句不知道什么意思
既然你举了卖手机的例子,最好建一张比较有意义的表,不要用ALL_OBJECTS
第二个例子:
where owner likenvl(i_phone_name, '%')
and OBJECT_NAME likenvl(i_phone_name, '%')
and OBJECT_ID likenvl(i_phone_name, '%')
这里有BUG, 全部用了i_phone_name, 应该是笔误。
最后一个例子看不懂。你并没有解决不定个数绑定变量的问题,还是用的常量。引入v_into_sql不知道是什么意思,你已经有v_sql了。
用了很多q'{ }'在这里完全没有必要, 里面的串根本没有特殊字符。
关于不定个数绑定变量参见这一贴:
http://www.itpub.net/viewthread.php?tid=1019164
还有这个:
http://www.oracle.com/technology ... -jul/o49asktom.html |
|