文档章节

PLSQL学习笔记--PLSQL编程基础

爱潜水的小八
 爱潜水的小八
发布于 2017/01/22 16:44
字数 1252
阅读 9
收藏 0

PL/SQL编程基础


数据类型
 Char和varchar2数据类型:
 相同点:都是作为字符类型
 不同点:char是定长的varchar2是变长的
     Char 最大为2000字节 varchar2为32767
注意: 如果定义char类型为char(10),但是只传入了7位数据,剩下的则会用空格补全。
 *如果出现直等情况,可能造成数据关联失败的情况。建议使用varhcar2定义字符类型。

NUMBER类型:
 Number(5,2) 表示共5位长,小数点前3位小数点后2位
 Number(4,-3)表示共4位长,-3 表示从后往前截取,判断千分位是否进位,如:5680 number(4,-3) 结果为6000

LONG和LONG RAW:
 LONG用于存储变长的字符串,最大长度为2GB ,由于容量上的优势多用来存储文本,字符数组以及各种文档,可以使用DML语句操作LONG列进行增删改查等。但是不能再表达式,函数以及where和group by 等特定语句中引用LONG类型的数据。
LONG RAW 用于存储原始的二进制变量数据,最大值为2GB,这样的数据需要Oracle的包来读取并转化为二进制数据,然后存储,并使用相反的方法来读取,不能使用DML语句来直接查询或者进行其他操作。

BOOLEAN类型:
Boolean用于存储true false null 
 True表示真值 false 表示价值 null 表示未知,并且sql没有数据类型与boolean对应
 但是Boolean的值可以通过if或者case 语句完成转化
CREATE OR REPLACE PROCEDURE boolean_type (b BOOLEAN)
IS 
BEGIN
  CASE
    WHEN b IS NULL THEN
      dbms_output.put_line('is null');
    WHEN b THEN
      dbms_output.put_line('is true');
    WHEN NOT b THEN
      dbms_output.put_line('is flase');
END;

PLS_INTEGER数据类型:
PLS_INTEGER类型和BINARY_INTEGE是相同的,给类型是带符号的整数数据类型,有效范围(-2147483648~2147483648),相比于NUMBER数据类型PLS_INTEGER直接使用硬件存储和计算。但是使用PLS_INTEGER存在溢出问题解决办法可以使用INTEGER
SIMPLE_INTEGER是PLS_INTEGER的子类型,具有非空约束的优势,如果指定了NULL值,则系统会报错,如果对整数数据类型需要非空约束,建议使用SIMPLE_INTEGER减少判断,并且SIMPLE_INTEGER定义时必须赋初始值,因为非空。


DATE和TIMESTAMP:
日期类型,timestamp比date类型更加准确些。
DECLARE
date_type DATE;
timestamp_type TIMESTAMP;
BEGIN
  SELECT SYSDATE INTO date_type FROM dual;
  dbms_output.put_line('DATE类型--'||date_type);
  SELECT SYSDATE INTO timestamp_type FROM dual;
  dbms_output.put_line('TIMESTAMP类型--'||timestamp_type);
END;
结果:
DATE类型--22-1月 -17
TIMESTAMP类型--22-1月 -17 02.12.04.000000 下午

ARCHORED类型:
Archored类型基于底层的数据库对象,定义之后会随着底层数据库的数据类型改变而改变,用户不必修改程序就可以适应底层数据类型的改变。
语法格式:变量名  对象类型属性%TYPE;
如:var_name变量名  emp(对象名).name(属性名)%TYPE;

自定义数据类型:
 自定义数据类型分为无约束和有约束。
  无约束: subtype 子类型名称 is 基类型  
    无约束自定义子类型与基类型有相同的取值范围,实际上相当于基类型的别名
    subtype  mynumber is number;
    var1 mynumber(3,2);
  有约束的:
    在无约束相同的语法中可以使用精度,范围,或者约束来定义用户子类型
    如:subtype mynumber is number(3,2)
    如果使用此类型定义4000.22 则报错!

PLSQL保留字:
  DECLARE,BEGIN,END,EXCEPTION

变量:
声明的变量可以赋初始值,指定非空约束,也可以使用默认值,或者定义为常量,常量不会再变化并且在声明时赋值。pai constant number := 3.14
变量的有效范围,内部局部,和全局
如:DECLARE
vars VARCHAR2(10) := 'var_out';
BEGIN
 DECLARE
   vars VARCHAR2(10) := 'var_in';
   BEGIN 
     dbms_output.put_line('in:='||vars);
   END;
 dbms_output.put_line('out:='||vars);
END;
结果:
in:=var_in  out:=var_out
变量还可以使用select first_name_type into first_name from emp

序列号:
Oracle使用序列生成器自动生成用户可以再事务中使用的唯一序列号,该序列号是一个整数类型,主要用于在多用户下产生唯一的数字序列,但是不会造成额外的磁盘I/O或者事务锁。理解为数据库的一个对象,该对象产生唯一序列,能够避免多用户相互等待而造成的事务串执行,序列号的使用提高了系统的事务处理能力,减少了多用户并行操作的等待时间。
创建一个序列:
Create sequence sequence_name start with 100 increment by 1;
创建一个序列sequence_name 从100开始每次自增1
当每次调用序列号的nextval 序列号都增加1;

事务:
Commit  rollback  savepoint 
Commit提交
Rollback回滚
Savepoint 保存点
commit事务提交永久存储,rollback 未提交回滚到原始
Savepoint 断点
例:
事务1
  Savepoint1
事务2
  Savepoint2
事务3
  Savepoint3

Rollback savepoint1
End;  执行结束,结果是回到savepoint1的事务结果。
 

© 著作权归作者所有

爱潜水的小八
粉丝 4
博文 14
码字总数 9447
作品 0
大连
程序员
私信 提问
Oracle学习笔记--远程连接Oracle数据库

一、服务端环境 系统:Windows Server 2008 r2 x64 数据库:Oracle11g 64位 二、客户端环境 系统:Windows 10 x64 数据库:只安装了instant client 32位 (instantclient-basic-win32-11.2....

yuewawa
2017/12/06
12
0
Oracle 11g中的Native PL/SQL代码编译

Oracle环境中,PL/SQL是我们进行业务逻辑实现的最佳手段,同时也是和Oracle数据库本身结合的最好的语言。使用好PL/SQL本身功能,可以大幅度提高我们的工作效率。 我们从最开始学习计算机和编...

突突突酱
2018/12/27
7
0
PMD 6.9.0 发布,跨语言静态代码自动分析工具

PMD 6.9.0 发布,PMD 是一个代码分析器,能够帮助发现常见的编程瑕疵,像是未使用的变量、空的 catch 块、不必要的对象创建等等。最初仅支持 Java 代码,目前还可支持 JavaScript、Salesforc...

达尔文
2018/10/29
789
0
PLSQL Developer 9.0注册码

PLSQL Developer 9.0注册码 2014年02月21日 15:16:32 zhengqiqiqinqin 阅读数:3166更多 个人分类: Oracle学习 原文地址:http://blog.sina.com.cn/s/blog_a23e4a8801013mu2.html PLSQL De......

linjin200
2018/10/15
7
0
plsql developer12

软件介绍 下载地址 http://www.xue51.com/soft/3954.html 猜你喜欢 用户评论 plsql developer是一个专门为Oracle数据库开发存储程序单元的集成开发环境(IDE),使用plsql developer,你能方...

linjin200
2018/10/15
18
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
38分钟前
4
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
8
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
11
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
10
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部