20201207+袁鑫

学习日志

知识总结

PL/SQL中动态执行SQL语句[了解]

在PL/SQL程序开发中,可以使用DML语句和事务控制语句,但是还有很多语句(比如DDL语句)不能 直接在PL/SQL中执行。这些语句可以使用动态SQL来实现。

PL/SQL块先编译然后再执行,动态SQL语句在编译时不能确定,只有在程序执行时把SQL语句作为字符 串的形式由动态SQL命令来执行。

如果动态语句是SELECT语句,可以把查询的结果保存到INTO后面的变量中。如果动态语句中存在参数,USING为语句中的参数传值。

子程序

子程序是已经命名的PL/SQL块,他们预编译后存储在数据库中,可以随时从任何数据库客户端和应用 程序中调用它们。命名的PL/SQL程序包括过程和函数。程序可以通过过程名和函数名对他们进行调 用,相当于Java中的方法,过程相当于就是没有返回值的方法。函数相当于有返回值的方法,过程和函 数都可以有自身的参数,在调用时为其传值。

相对以前学习过的PL/SQL块就是匿名PL/SQL块,子程序与匿名PL/SQL块一样,具有声明部分、可执行 部分、异常处理部分。声明部分包含类型、游标、常量、变量、异常的声明,这些声明项都是局部的, 在子程序运行结束将不复存在。可执行部分包括变量操作、流程控制操作、Oracle SQL的语句执行操 作,以及其他子程序的调用。异常处理部分包含异常处理程序,负责处理子程序运行中可执行部分出现 的异常。

子程序除了拥有PL/SQL块的优点外,还有:

模块化:子程序将程序分解为明确的,可管理的逻辑模块。程序包可以将若干个子程序放入同一个 包中,统一管理。

可重用性:子程序在创建并执行后,保存在服务器上,其他子程序或者客户端可以轻松的进行调用。

安全性:用户可以设置权限,使得访问数据的唯一方式就是子程序,子程序是数据库对象,用户可以为子程序授予适当的权限控制,限制用户对子程序的调用。这不仅可以让数据安全,而且还能保 证数据正确。

过程

过程是执行一系列PL/SQL操作的子程序,从根本上讲,过程就是命名的PL/SQL程序库,他可以拥有参 数,过程编译后存储在数据库中,然后由应用程序或者其他的PL/SQL块调用。

  1. OR REPLACE 是可选的,表示如果当前用户下已经有同名的过程名,则覆盖旧的过程。过程名后 面括号中是过程的参数,过程的参数可有可无,如果过程存在参数,参数列表必须有小括号括起 来。如果过程没有参数,不能有小括号。
  2. IS或AS标志着PL/SQL块开始,IS和AS是等价的。在过程中没有关键字DECLARE。
  3. 如果过程中需要本地变量、常量等声明部分,可以在这里声明,方法与PL/SQL块中声明变量的方 法相同。
  4. 为了便于阅读交流和良好的编程风格,建议在END后面加上过程名

心得

今天把最后的Oracle 学完了,我感觉到自己在数据库这个上面知识点还有些欠缺,从最开始的mysql上面就学得不是很透彻,面试的时候刚好又是在学习这个Oracle之前,又被问到了差不多一般的数据库,所以还是需要多花很多功夫在数据库上面。

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1