Oracle plsql 基础篇1 数据类型以及流程控制
来源:互联网 发布:傲剑舍利子升级数据 编辑:程序博客网 时间:2024/06/13 06:46
一、PL/SQL数据类型
数值类型
1、NUMBER 以十进制方式存储,可以表示整数和浮点数,Number最多可达38位(包括小数部分) ,eg : NUMBER(5,2),表示有效位5位,小数点2位, 234.23
2、PLS_INTEGER 和 BINARY_INTEGER 可以认为是同一类型,范围是-2147483648~2147483647 它们的区别是BINARY_INTEGER 发生溢出时能为他指派一个NUMBER类型而不至于发生异常,但PLS_INTEGER 溢出时就会发生异常
3、SIMPLE_INTEGER oracle11g新增的类型,是PLS_INTEGER 的子类型 取值范围和PLS_INTEGER 一样,该类型允许为空。性能高于PLS_INTEGER ,如果数据本身不需要溢出检查 或者不可能为空 ,则可以选择该类型
字符类型
1、CHAR 用来描述固定长度的字符串,当他的值无法达到定义的长度时,会以空格补齐。最长为32767个字节,默认长度为1,改数据类型比起VARCHAR2比较浪费空间,而且可能需要对数据空格进行处理
2、VARCHAR2 用来描述可变长度字符串,作为变量时候最长32767个字节,作为字段存储时最多4000个字节。当他的值未达到定义的长度时候。不会空格补齐,相对节省空间
3、LONG 以可变的方式存储数据。作为变量最长32760个字节,作为存储字段可达2GB
4、NCHAR、NVARCHAR2类型与CHAR, VARCHAR2相同。与字符集有关
布尔类型
不允许定义表中的数据类型。可以用来存储逻辑值。有3个值可选: TRUE , FLASE , NULL
日期类型
DATE 存储月、年、日、世纪、时、分、秒
TIMESTAMP 存储月、年、日、世纪、时、分、秒以及小数的秒
复合类型 使用复合类型必须先定义,然后才能声明该类型的变量
1、记录类型
(1)自定义类型
直接写例子来理解吧
eg:
DECLARE
TYPE readerinfo IS RECORD (TYPE IS RECORD关键字 表示记录类型)
(
v_readerid NUMBER(4),
v_readname VARCHAR2(20),
VARCHAR2(50),
) ;
v_readerinfo readerinfo ;
BEGIN
SELECT READERID, READNAME , UNIT INTO v_readerinfo FROM READERINFO WHERE READERID = 9701;
DBMS_OUTPUT.PUT_LINT( ' v_readerid =' || v_readerinfo.v_readerid);
DBMS_OUTPUT.PUT_LINT( ' v_readname=' || v_readerinfo.v_readname);
DBMS_OUTPUT.PUT_LINT( ' v_unit =' || v_readerinfo.v_unit);
END;
注: 前面表示变量名 后面表示变量类型 即v_readerinfo 为变量名 ,类型为readerinfo
可根据变量名.成员名称获取具体的值
(2)利用%ROWTYPE指明数据类型
这种方式直接引用表中的数据类型作为变量的类型,开发过程中用的较多,并且可以避免表中字段类型更改导致的出错
eg:
DECLARE
v_readerinfo READERINFO%ROWTYPE ;
BEGIN
SELECT READERID, READNAME , UNIT INTO v_readerinfo FROM READERINFO WHERE READERID = 9701;
DBMS_OUTPUT.PUT_LINT( ' v_readerid =' || v_readerinfo.v_readerid);
DBMS_OUTPUT.PUT_LINT( ' v_readname=' || v_readerinfo.v_readname);
DBMS_OUTPUT.PUT_LINT( ' v_unit =' || v_readerinfo.v_unit);
END;
注:READERINFO是数据库表明。后面直接跟上%ROWTYPE,就表示引用数据库表字段类型作为变量的数据类型
取值方式和上面相同,根据变量名.成员名称获取值
2、索引表类型
3、VARRAY变长数组类型
二、流程控制
流程控制无非IF ELSE 循环,这里直接写例子来理解
IF ELSE这里不做详写了,下面介绍下plsql里的3种循环
(1)
declare
v_rlt number(8) := -3;
begin
<<while_loop>> --loop名称 可缺省 ,如果加了 下面end loop后必须加上
while v_rlt < 3
loop
dbms_output.put_line('v_rlt = ' || v_rlt);
if v_rlt > 0
then dbms_output.put_line('v_rlt 大于0 ');
end if;
v_rlt := v_rlt + 1;
end loop while_loop;
dbms_output.put_line('循环结束');
end;
(2)
declare
v number(2,1) := 30.23;
begin
loop
v := v + 1;
dbms_output.put_line('v=' || v);
exit when v > 5;
end loop;
end;
(3)
declare
v_for number(8) := 0;
begin
for v_i in 1..5 loop
v_for := v_for + v_i;
dbms_output.put_line('v_for =' || v_for);
end loop;
end;
今天先写到这,接下去继续写游标。存储过程和函数等
- Oracle plsql 基础篇1 数据类型以及流程控制
- Plsql基础(数据类型,控制语句)
- 黑马程序员——java基础2 数据类型、流程控制、方法以及数组
- PLSQL流程控制
- php布尔型数据类型以及流程控制的数据类型转换
- Oracle plsql基础篇 游标
- php流程控制语句以及条件判断中的数据类型转换
- php学习基础篇之数据类型转换、运算符、if 、switch 流程控制
- 积少成多Flash ActionScript 3.0(1) - 基础之数据类型、操作符和流程控制语句
- 积少成多Flash ActionScript 3.0(1) - 基础之数据类型、操作符和流程控制语句
- php基础系列----3数据类型及运算和流程控制
- python基础-变量、数据类型、input、格式化、运算符、流程控制
- PLSQL-流程控制与流程循环
- oracle之plsql基础
- oracle的PLSQL基础
- oracle PLSQL基础学习
- Oracle 基本 以及 plsql 语句
- PLSQL编程3:plsql流程控制和循环结构
- Javascript中转义字符的过滤
- Aidl学习
- 排序学习记录
- iOS开发 NSTimer 后台运行
- 3D游戏引擎学习三(游戏引擎核心类Game)
- Oracle plsql 基础篇1 数据类型以及流程控制
- 说说近些年研究的CMS程序
- UITableViewController表视图建立过程中自定义单元格的创建,通过URL地址下载图片
- 用JS代码解决一个聊天系统聊天消息是否刷屏
- java压缩与解压缩文件(利用apache的ant.jar)
- "What Child is This?" - The answer is in this favorite Christmas song
- 下载器草稿pdf
- 求m个元素集合中n个元素的所有子集(C/OC)
- 使用 RadioGroup+TabHost 搭建框架实现 导航 切换