Oracle数据库服务器端编程介绍
SQL非过程语言的局限
在 SQL 之类的非过程化语言中,指定的是要操作的数据集,而不是要执行什么操作或该操作应如何执行。体现的是以集合为单位来处理和操作数据集。
在过程化语言程序中,大多数语句的执行取决于其前面或后面的语句及控制结构,如循环或条件分支,体现的是以行为单位来逐行进行处理和操作。
简单案例
为演示过程化语言与非过程化语言之间的区别,假设如下的 SQL 语句查询employees 表:
SELECT employee_id, department_id, last_name,
salary FROM employees;
前面的语句只是请求数据,但并不会在数据上应用逻辑。但是,如果希望应用程序能够确定在数据集中的每个员工是否应该基于工资和部门绩效来提高待遇。加薪的必要条件是,在过去五年中,加薪没有超过三次以上的雇员。如果要加薪,应用程序必须调整工资并发送电子邮件给经理 ;否则,该应用程序必须更新一份报告。
基于上面的需求,需要使用条件逻辑和程序流控制的过程化数据库应用程序,才能实现。
Oracle数据库中如何实现过程化语言
Oracle数据库中,可以使用的开发方法如下:
1、使用客户端编程,将 SQL 语句嵌入到由过程化语言如 C、 C++、 或Java 等编写的应用程序中。
可以将 SQL 语句置入到源代码中,并在编译之前将其提交给预编译器或 Java 翻译器。或者也可以消除预编译步骤,而使用如 Java 数据库连接 (JDBC) 或 Oracle 调用接口 (OCI) 这样的 API ,使应用程序能够与数据库进行交互。
2、使用服务器端编程,开发驻留在数据库中的数据逻辑处理程序。
应用程序可以显式地调用以 PL/SQL (发音为 P L sequel) 或 Java 编写的存储子程序(过程和函数)。也可以创建一个触发器,它是一个存储在数据库中的命名程序单元,在响应指定的事件时调用。
服务器端编程的好处
本文主要介绍服务器端编程的好处:
1、它属于是内置于数据库的功能
2、可以在任意Oracle数据库中进行编程和部署。
3、由数据库(而不是由应用程序)确定在给定的操作系统上执行任务的最佳方式。
4、通过在服务器上集中应用程序处理,子程序增加可伸缩性,使客户端能够重用代码。
5、由于子程序调用快速而高效,仅仅一个调用就可以启动一个计算密集型的存储子程序,减少了网络流量。
Oracle数据库中服务器编程的实现方法
在 Oracle 数据库中可以使用以下语言来实现服务器编程,存储数据逻辑的处理:
1、PL/SQL
PL/SQL 是 Oracle 数据库针对 SQL 的过程化扩展。
PL/SQL 与数据库集成,支持所有 Oracle SQL 语句、 函数、和数据类型。
由数据库API 编写的应用程序,可以调用 PL/SQL 存储子程序,或发送 PL/SQL 代码块到数据库以被执行。
2、Java
Oracle 数据库还对开发、 存储、和部署 Java 应用程序提供支持。
Java 存储子程序在数据库中运行,并独立于在中间层上运行的程序。
Java 存储子程序使用与 PL/SQL 类似的运行模型来与 SQL 接口。
