ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL动态SQL-何时需要动态SQL

PLSQL Language Referenc-PL/SQL动态SQL-何时需要动态SQL

原创 Oracle 作者: luisedalian 时间:2014-03-18 07:13:50 0 删除 编辑

PL/SQL动态SQL

动态SQL:是在运行时产生和执行SQL语句的编程方法。

在下列情况下动态SQL是非常有用的:

n  编写像ad hoc查询系统一样的通用目的的和灵活的应用程序。

n  编写必须运行DDL语句的应用程序

n  在编译时并不知道SQL语句的全部文本

n  在编译时并不知道输入、输出变量的个数和类型

PL/SQL提供了2种方法来写动态SQL:

n  本地动态SQL:是PL/SQL语言建立和运行动态SQL的功能。

n  DBMS_SQL包:是建立、运行和描述动态SQL语句的API。

 

本地动态SQL的代码相对于等效的DBMS_SQL包代码更容易阅读和书写,并且运行明显要快(尤其是能被编译器优化时)。然而为了输入本地动态SQL代码,你必须在编译时知道动态SQL语句输入、输出变量的个数和类型。如果在编译时不知道这些信息,就必须使用DBMS_SQL包。

 

当你同时需要DBMS_SQL包和本地动态SQL,可以使用DBMS_SQL.TO_REFCURSOR()和DBMS_SQL.TO_CURSOR_NUMBER()函数在它们之间进行转换。

何时需要动态SQL

n  在编译时不知道SQL的全部文本。例,一个查询语句在编译时包含一个未知的标识符(如表名)或在编译时一个WHERE子句中的subclauses的个数不确定。

n  静态SQL不支持的SQL语句

 

如果不需要动态SQL,则可以使用静态SQL,有如下好处:

n  成功地编译可以验证静态SQL引用有效的数据库对象,并且具有需要的权限来访问这些对象。

n  成功地编译可以创建方案对象依赖。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1123727/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6044090