您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Oracle数据库之PL/SQL程序基础设计

2024/3/28 14:54:48发布15次查看
一、pl/sql块结构 前边我们已经介绍了pl/sql块的结构, http://www.linuxidc.com/linux/2015-01/112351.htm 再来回顾一下: decl
一、pl/sql块结构
前边我们已经介绍了pl/sql块的结构,  再来回顾一下:
declare/* * 声明部分——定义常量、变量、复杂数据类型、游标、用户自定义异常 */begin/* * 执行部分——pl/sql语句和sql语句 */exception/* * 异常处理部分——处理运行异常 */end; /*块结束标记 */要实现pl/sql程序设计,先介绍如下的基本内容:
二、标识符
pl/sql程序设计中的标识符定义与sql的标识符定义的要求相同:
注意: 一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果。
三、变量
1. 变量定义
声明:
variable_name type;示例:
my_var number(4);赋值:
variable := expression ;示例:
my_var := 32 * 8 + 79;-- 声明并赋值cnt number(2) := 3;2. 变量作用域
在pl/sql编程中,如果在变量的定义上没有做到统一的话,可能会隐藏一些危险的错误,这样的原因主要是变量的作用域所致。变量的作用域是指变量的有效作用范围,与其它高级语言类似,pl/sql的变量作用范围特点是:
四、运算符
1. 关系运算符
运算符说明
=等于
, != , ~= , ^=不等于
>大于
>=大于等于
2. 逻辑运算符
运算符说明
and逻辑与
or逻辑或
not逻辑非,取反
3. 算术运算符
运算符说明
+加
-减
*乘
/除
4. 其它运算符
运算符说明
is null是空值
between and介于两者之间
in在一列值中间
:=赋值运算符
=>关系号
..范围运算符
||字符连接符
五、数据类型
前面已经介绍过oracle中的基本数据类型,除了这些基本数据类型外,oracle中还有其它的数据类型,我们一一来分析。
1. boolean
该数据用于定义布尔变量,其变量的值为true、false或null。注意此类型只能在pl/sql中使用,表列是没有此类型的。
2. %type
通常用于指定表的某个列的数据类型,可以理解为“的类型”(小技巧:%读“的”)。
示例:
emp_id employee.id%type;使用%type特性的优点在于:
所引用的数据库列的数据类型可以不必知道。所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改pl/sql程序。3. %rowtype
%rowtype操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致。
示例:
rec employee%rowtype;使用%rowtype特性的优点在于:
所引用的数据库中列的个数和数据类型可以不必知道。所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改pl/sql程序。4. 复合数据类型
4.1. 记录(record)
记录类型类似于c语言中的结构数据类型,它把分离的、逻辑相关的、基本数据类型的变量组成一个整体存储起来,它必须包括至少一个标量型或record数据类型的成员,称作pl/sql record的域(field),其作用是存放互不相同但逻辑相关的信息。
语法:
type record_name is record(varable1 data_type1 [not null] [:= default_value ],varable2 data_type2 [not null] [:= default_value ],......,varablen data_typen [not null] [:= default_value ] );在使用记录数据类型变量时,需要先在声明部分先定义记录的组成、记录的变量,然后在执行部分引用该记录变量本身或其中的成员。
示例1:
declare-- 定义记录类型type test_rec is record(rec_name varchar2(30) not null := '匿名',info varchar2(100));-- 声明记录变量rec_emp test_rec;beginrec_emp.rec_name :='刘强东';rec_emp.info :='谈京东的业务发展';dbms_output.put_line(rec_emp.rec_name||' ' ||rec_emp.info);end;说明:我们可以使用dbms_output.put_line(outdata)或dbms_output.put(outdata)将处理结果输出到屏幕上。
运行结果:
刘强东 谈京东的业务发展示例2(示例中所用到的表及数据见文末):
declare--定义与employee表中的几个列相同的记录数据类型type record_type_employees is record(e_id employee.id%type,e_name employee.name%type,e_birth employee.birthday%type,e_address employee.address%type,e_did employee.did%type);--声明一个该记录数据类型的记录变量emp_record record_type_employees;beginselect id, name, birthday, address, did into emp_recordfrom employeewhere id = &emp_id;dbms_output.put_line('雇员名称:'||emp_record.e_name||' 出生日期:'||emp_record.e_birth||' 地址:'||emp_record.e_address);end;说明:可以用select语句对记录变量进行赋值,只要保证记录字段与查询结果列表中的字段相配即可。&emp_id表示接收用户的输入。
紧跟着&符号后面的变量被称为替换变量。替换变量对数据库引擎是“不可见的”。其实pl/sql会用用户输入的文本内容来替换变量引用。
如果你想在代码的不同地方引用相同的替换变量,那就需要在第一个替换变量前面放两个&符号,这样才会为你保留这个值以便后续使用。
输入2,输出结果:
雇员名称:刘兰 出生日期:03-9月 -85 地址:四川成都4.2. 表(table)
4.2.1. 索引表
索引表也称为pl/sql表,它是oracle早期版本用于处理pl/sql数组的数据类型。索引表的元素个数没有限制,并且下标可以为负值。
它与记录类型相似,但它是对记录类型的扩展。它可以处理多行记录,使得可以在pl/sql中模仿数据库中的表。
注意,索引表只能作为pl/sql复合数据类型使用,而不能作为表列的数据类型使用。
语法结构:
type table_name is table of element_type [not null]index by [binary_integer | pls_integer | varchar2];关键字index by表示创建一个主键索引,,以便引用记录表变量中的特定行。
表是集合类型,集合类型常用方法有:
方法说明
exists(n)如果集合的第n个成员存在,则返回true
count返回已经分配了存储空间即赋值了的成员数量
first返回成员的最低下标值
last返回成员的最高下标值
prior(n)返回下标为n的成员的前一个成员的下标。如果没有则返回null
next(n)返回下标为n的成员的后一个成员的下标。如果没有则返回null
trimtrim:删除末尾一个成员。
trim(n) :删除末尾n个成员
deletedelete:删除所有成员。
delete(n) :删除第n个成员。delete(m, n) :删除从n到m的成员。
extendextend:添加一个null成员。
extend(n):添加n个null成员。
extend(n,i):添加n个成员,其值与第i个成员相同。
limit返回在varray类型变量中出现的最高下标值
集合方法调用语法为:
collection_name.method_name[(parameters)]
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product