云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > PLSQL语言的运用

PLSQL语言的运用

  • 62 次阅读
  • 3 次下载
  • 2025/6/6 5:17:07

? PL/SQL是 Procedure Language & Structured Query Language 的缩写 ? PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL的优点

? 有利于客户/服务器环境应用的运行 PL/SQL是对SQL语言存储过程语言的扩展 ? 适合于客户环境

? PL/SQL是ORACLE系统的核心语言,现在ORACLE的许多部件都是由PL/SQL写成

PL/SQL块结构和组成元素 PL/SQL块

PL/SQL程序由三个块组成,即声明部分、执行部分、 异常处理部分。

PL/SQL块结构和组成元素 PL/SQL块的结构如下: DECLARE

/* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */ BEGIN

/* 执行部分: 过程及SQL 语句 , 即程序的主要部分 */ EXCEPTION

/* 执行异常部分: 错误处理 */ END;

其中 执行部分是必须的。

PL/SQL块可以分成三类:

? 匿名块:动态构造,只能执行一次

? 子程序:存储在数据库中的存储过程、函数及包等。当在数据库上建立好后可以在

其它程序中调用它们

? 触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序

PL/SQL中的标识符

PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同

? 标识符名不能超过30字符 ? 第一个字符必须为字母 ? 不分大小写

? 不能是SQL保留字

PL/SQL中的变量类型 类型 CHAR VARCHAR2 BINARY_INTEGER NUMBER(p,s) 说明 定长字符串 可变字符串 带符号整数,为整数计算优化性能 数值 LONG DATE BOOLEAN ROWID 变长字符串 日期 布尔 存放数据库行号

PL/SQL中的标识符

一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果 例:

DECLARE

Ename varchar2(20) :=’KING’; BEGIN DELETE FROM emp WHERE ename=ename; END;

PL/SQL中声明变量

在语句块的声明部分对变量声明,声明一个变量的语法是: variable_name [ constant ] type [ not null ] [:=value] 其中:

variable_name 为变量名 type 为类型

value 为变量的初值

PL/SQL中的标识符

下面是建议使用的变量命名方法 标识符 程序变量 程序常量 游标变量 异常标识 表类型 表 记录类型 参数 命名原则 V_name C_constant Name_cursor E_name Name_table_type Name_table Name_type P_name 例 V_id C_student_name Emp_cursor E_too_many_rows Emp_record_type Emp Emp_record P_id

PL/SQL中声明变量 例:

DECLARE V_Description VARCHAR2(50); V_Number NUMBER := 45; V_Counter BINARY_INTEGER := 0;

注意:如果变量在声明时使用了NOT NULL选项则必须为变量指定初值。

如果变量在声明时使用了CONSTANT选项则必须为变量指定初值, 并且该初值不能被改变。

PL/SQL中的复合类型

记录类型 :记录类型是把逻辑相关的数据作为一个单元存储起来 定义记录类型语法如下:

TYPE record_type IS RECORD(

Field1 type1 [NOT NULL] [:= exp1 ], Field2 type2 [NOT NULL] [:= exp2 ], . . . . . .

Fieldn typen [NOT NULL] [:= expn ] ) ;

PL/SQL中的复合类型

%TYPE:定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同 ,这时可以使用%TYPE 例:DECLARE

-- 用 %TYPE 类型定义与表相配的字段 TYPE t_Record IS RECORD( T_no emp.empno%TYPE, T_name emp.ename%TYPE, T_sal emp.sal%TYPE ); -- 声明接收数据的变量 v_emp t_Record;

PL/SQL中的复合类型

%ROWTYPE:返回一个记录类型, 其数据类型和数据库表的数据结构相 一致。

例:DECLARE v_empno emp.empno%TYPE :=&no; rec emp%ROWTYPE; BEGIN

SELECT * INTO rec FROM emp WHERE empno=v_empno;

DBMS_OUTPUT.PUT_LINE('姓名:'||rec.ename||'工资:'||rec.sal||'工作时间:'||rec.hiredate); END;

PL/SQL表

PL/SQL 表, 或者称为索引表(index-table),是可以在PL/SQL 程序中引用、能够模仿数组的非永久表。用户可以定义一个表类型,然后声明这种类型的变量。接下来,用户就可以将记录添加到用户的PL/SQL 表中,并且采用与引用数组元素大体相同的方法引用他们 表包括两个基本成分: 数据处理类型为BINARY_INTEGER主键 标量或记录数据类型的列

PL/SQL表 定义一个表:

TYPE type_name IS TABLE OF {column_type | variable%TYPE | table.column%TYPE } [NOT NULL] | table%ROWTYPE [ INDEX BY BINARY_INTEGER]; 例: DECLARE TYPE dept_table_type IS TABLE OF dept%ROWTYPE INDEX BY BINARY_INTEGER; my_dname_table dept_table_type;

PL/SQL表 注意: Index-by表中的元素不一定要按任何特定的顺序排序 用于Index-by表的关键字没有必要是顺序的 关键字唯一允许的类型是BINARY_INTERGER

引用表元素

例: DECLARE type dept_table_type is table of dept%ROWTYPE index by binary_integer; my_dname_table dept_table_type; int number(3); BEGIN

int := -10;

my_dname_table(int).dname := 'searching';

dbms_output.put_line(my_dname_table(int).dname); int := 0;

my_dname_table(int).dname := 'market';

dbms_output.put_line(my_dname_table(int).dname); int := 10;

my_dname_table(int).dname := 'finance';

dbms_output.put_line(my_dname_table(int).dname); END;

PL/SQL中的可变数组 一般格式为:

TYPE type_name IS VARRAY (maximum_size) OF element_type 其中:type_name是新可变长数组类型的类型名。 maximum_size是一个指定可变数组中元素最大数目的整数。 element_type是一个PL/SQL标量、记录或对象类型。 一般格式为:DECLARE type numberlist is varray(10) of number(5); type recordlist is varray(5) of dept%rowtype;

搜索更多关于: PLSQL语言的运用 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

? PL/SQL是 Procedure Language & Structured Query Language 的缩写 ? PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL的优点 ? 有利于客户/服务器环境应用的运行 PL/SQL是对SQL语言存储过程语言的扩展 ? 适合于客户环境 ? PL/SQL是ORACLE系统的核心语言,现在ORACLE的许多部件都是由PL/SQL写成 PL/SQL块结构和组成元素 PL/SQL块 PL/SQL程序由三个块组成,即声明部分、执行部分、 异常处理部分。 PL/SQL块结构和组成元素 PL/SQL块的结构如下: DECLARE /* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */ BEGIN

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com