PL/SQL 示例代码

PL/SQL 示例代码

这些 PL/SQL 代码示例演示了如何在 Oracle 数据库中使用各种 PL/SQL 特性。

示例代码— Oracle 数据库 10g

PL/SQL 示例应用程序 — FORALL [2005 年 1 月 12 日]
Oracle 数据库 10g 通过集合中的非连续索引,引入了对 FORALL 语法的支持。INDICES OF 子句允许将 FORALL 语法用于稀疏集合,而 VALUE OF 子句用于指向其他集合的索引集合。该示例显示了如何在 PL/SQL 应用程序中使用这些特性。
自述文件 下载 (ZIP)

正则表达式 — 用户搜索示例 [2004 年 12 月 13 日]
本示例演示了如何使用正则表达式 API 通过 TRIGGER、ROCEDURE、CURSOR 等从数据库中验证、搜索和提取信息。借助用户信息系统的场景,本示例使用各种模式来搜索和提取存储在数据库表中的用户信息(如爱好和兴趣、位置信息等)。
自述文件 下载 (ZIP)

正则表达式 — DNA 示例 [2004 年 12 月 1 日]
本示例使用正则表达式 API 来分析从 SGD 数据库接收到的原始 HTTP 流,并且仅提取 DNA 序列。该序列存储在本地的表中,并使用正则表达式函数进一步分析它以识别特定的酶切图谱。
自述文件 下载 (ZIP)

正则表达式 — 用户验证示例 [2004 年 9 月 28 日]
借助一个典型的用户注册情景,本示例应用程序使用了在 Oracle 数据库 10g 中实现的正则表达式函数来验证用户输入。
自述文件 下载 (ZIP)

示例代码 — Oracle9i 数据库版本 2
除了依赖于公共模式中的对象(特别是员工表)外,这些示例是完全独立的。这些对象已经安装在预先构建的数据库中。可以通过运行 Oracle HOME 目录下的 demo/schema 目录中的 mksample.sql 在定制的数据库中创建它们。
关联数组(index-by-varchar2 表)
在 PL/SQL 程序中使用 SQL 的 RECORD 绑定
Utl_File:在 Oracle9i 数据库 9.2.0 版中所引入增强功能的概述

示例代码— Oracle9i 数据库版本 1
除了依赖于公共模式中的对象(特别是员工表)外,这些示例是完全独立的。这些对象已经安装在预先构建的数据库中。可以通过运行 Oracle HOME 目录下的 demo/schema 目录中的 mksample.sql 在定制的数据库中创建它们。
PL/SQL 静态 SQL 中的游标重用
在 PL/SQL 程序中使用 CASE 语句
批量绑定增强
表函数和游标表达式
多层集合
UTL_HTTP 程序包增强
演示如何使用 UTL_HTTP 程序包(版本 9.0.1 及更高版本)的 B2B 情景
自然编译

使用 UTL_SMTP 程序包从数据库中发送邮件
应用程序可以在出现特定数据库情况时通过电子邮件通知有关方面(并提供相应的当前数据)。(例如,当某行中的字段表示购买请求时。)
源代码

示例代码— Oracle8i 数据库
批量绑定
显示不使用和使用批量绑定执行 DML 操作(插入和选择查询)之间的性能差异。源代码

Profiler 用法示例
下面是 profiler 数据用法的一个示例。它包含各种有用的即席查询以及对 prof_report_utilities 程序包的调用。
源代码

Profiler 报表实用程序
以下是 PL/SQL Profiler 报表实用程序(包括 prof_report_utilities 程序包)。源代码

Nocopy 修改符
NOCOPY 是 IN OUT 和 OUT 参数模式的修改符。NOCOPY 特性允许您通过引用将参数传递给过程或函数,避免了 CPU 和内存开销。该代码示例也演示了因使用 NOCOPY 修改符而获得的性能改善。
源代码

独立事务
独立事务使您可以在调用事务(主事务)的上下文外执行某些 SQL 操作(在新的上下文中,即独立事务的上下文中),提交或回滚这些操作然后返回至调用事务(主事务)的上下文,而不会丢失先前在主事务中的操作。
源代码

调试外部过程的程序包
下面是调试外部调用的 C 程序所必须遵循的步骤。包括一个要加载的程序包。
源代码

外部过程
这个示例程序演示了如何创建和使用 PL/SQL 的外部过程特性。这个外部过程演示程序包含两个文件:extproc.sql 和 extproc.c。extproc.c 包含在 extproc.sql 中引用的 C 函数。
源代码: PL/SQL 版本 C 版本

调用者权限程序
在 Oracle8i 之前,所有的程序都以其定义者的权限来执行。调用者权限程序使用调用该程序的用户的权限来执行。
源代码

PL/SQL 自带的动态 SQL
在 Oracle8i 之前,对 PL/SQL 中动态 SQL 的支持是通过 DBMS_SQL 程序包的编程接口提供的。PL/SQL 自带的动态 SQL 使得 PL/SQL 中的动态 SQL 处理变得十分简单和易于使用。它也提高了 PL/SQL 中动态 SQL 执行的性能。
源代码

PL/SQL 对象类型
这个演示程序基于一个银行应用程序,说明了 PL/SQL 对象类型、集合和记录特性。(exampbld.sql:创建模式;examplod.sql:加载数据)
源代码: 对象类型 创建模式 加载数据

表运算符
这个演示程序说明了如何使用 TABLE 运算符来解除集合的嵌套以及将本地 PL/SQL 集合变量转化为关系表。
源代码

Left Curve
更多 PL/SQL 资源
Right Curve
. PL/SQL 技术页面
. PL/SQL 最佳实践

Left Curve
更多示例代码
Right Curve
. 高级 JDBC 示例
. JDBC 2.0 示例
. JDBC 3.0 示例
. SQLJ 示例
更多……

Left Curve
论坛
Right Curve
. 示例代码
. 数据库
. SQL 和 PL/SQL 论坛
更多……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PL/SQL编程 pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入式sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误。这样使得他的功能变的更强大。缺点是移植性不好。 编写一个存储过程,向表中添加数据。 1. create table mytest (name varchar2(30),passwd varchar2(30)); 2. create or replace procedure xxc_pro1 is begin insert into mytest values ('小红','m123'); end; 3. 调用过程 exec 过程名(参数1,参数2…)或call 过程名参数1,参数2…) ① exec xxc_pro1; 或者是 ② call xxc_pro1; pl/sql可以做什么? 块:包括过程、函数、触发器、包。 编写规范: 1. 注释 --:单行注释 eg:select * from emp where empno=7788;--取得员工信息 /*……*/多行注释 2. 表示符号(变量)的命名规范: ① 当定义变量时,建议用v_作为前缀:v_ename ② 当定义常量时,建议用c_作为前缀:c_rate ③ 当定义游标时,建议用_cursor作为后缀:emp_cursor ④ 当定义例外时,建议用e_作为前缀:e_error 块(block)是pl/sql的今本程序单元,编写pl/sql程序实际上就是在编写pl/sql块;pl/sql块由三部分组成:定义部分,执行部分,例外处理部分。 declare --可选部分 /*定义部分:定义常量,变量,游标,例外,复杂数据类型*/ begin --必选部分 /*执行部分:要执行的pl/sql语句和sql语句*/ exception --可选部分 /*例外处理部分:处理运行的各种错误*/ 实例1:只包含执行部分的pl/sqlSQL> set serveroutput on --打开输出 SQL> begin 2 dbms_output.put_line('hello'); 3 end; 4 / 说明:dbms_output是oracle提供的包,该包包含一些过程,put_line就是其中之一。 实例2:包含定义部分和执行部分 SQL> declare 2 v_ename varchar2(5); 3 begin 4 select ename into v_ename from emp where empno = &no; 5 dbms_output.put_line('雇员名'||v_ename); 6 end; 7 / 说明:&:从控制台输入变量,会弹出一个对话框。 实例3.同时输出雇员名和工资 SQL> declare 2 v_ename varchar2(20); 3 v_sal number(10,2); 4 begin 5 select ename,sal into v_ename,v_sal from emp where empno=&no; 6 dbms_output.put_line('雇员名:'||v_ename||' 工资:'||v_sal); 7 end; 8 / 包含定义,执行,和例外处理的pl/sql块。 实例4.当输入的员工号不存在时 SQL> declare 2 v_ename varchar2(20); 3 v_sal number(10,2); 4 begin 5 select ename,sal into v_ename,v_sal from emp where empno =&no; 6 dbms_output.put_line('雇员名:'||v_ename||' 工资:'||v_sal); 7 exception --异常处理部分 8 when no_data_found then 9 dbms_output.put_line('请输入正确的员工号!'); 10 end; 11 / 以上为块的基础,下面来介绍块的各个组成:过程,函数,触发器,包。 过程 过程用于执行特定的操作,当执行过程的时候,可以指定输入参数(in),也可以指定输出参数(out)。通过在过程中使用输入参数,可以讲数据输入到执行部分,通过使用输出参数,可以将执行部分的数据输出到应用环境,在pl/sql中可以使用create procedure命令来创建过程。 编写一个存储过程,可以输入雇员名和新工资来改变员工工资。 --案例 create or replace procedure xxc_pro3(newname in varchar2,newsal in number) is begin update emp set sal=newsal where ename=newname; end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值