--------------------
动态SQL和静态SQL
-------------------------------------------------- -----------
1.静态SQL比动态SQL写起来要简单,代码量也少,执行效率也同,所以在可能的情况下还是用静态SQL.
2.动态SQL一般是为了为了动态的数据源和动态的轮出以及动态的查询条件.
3.动态SQL能执行DLL语句,而静态则不可以.
-------------------------------------------------- -----------------------
提供了DBMS_SQL包和ref cursor来执行动态SQL
ref cursor执行效率更快
-------------------------------------------------- ------
以下情况应使用dbms_sql包来执行动态SQL
1.不知道将使用列的个数和数据类型.DBMS_SQL包括"描述"结果集的过程,而本地动态SQL不需要.
2.不知道可能要使用的绑定变更的个数或类型,DMBS_SQL允许在程序上将输入绑定到语句,而本地动态SQL要求编译时知道绑定变量的个数和类型
3.将 提取 或插入上千个行并能够使用数据处理.DBMS_SQL允许使用数据处理.退在单个调中提取N行数据而不是一次提取一行数据
4.在同一个对话中多次执行同一个语句,DBMS_SQL将允许分析这个语句一次但重复执行多次!
=========================================
以下情况应使用本地动态SQL
-------------------------------------------------- --------
1.知道将使用的列的个数和类型.
2.知道绑定变量的个数和类型
3.将执行DDL语句
4.将执行这个语句很少次数(最好是一次)