PLSQL编程基础

 

数据类型:sql

 Charvarchar2数据类型:数据库

 相同点:都是做为字符类型数组

 不一样点:char是定长的varchar2是变长的函数

     Char 最大为2000字节 varchar232767spa

注意: 若是定义char类型为char(10),可是只传入了7位数据,剩下的则会用空格补全。对象

 *若是出现直等状况,可能形成数据关联失败的状况。建议使用varhcar2定义字符类型。事务

 

NUMBER类型:rem

 Number(5,2) 表示共5位长,小数点前3位小数点后2文档

 Number(4,-3)表示共4位长,-3 表示从后往前截取,判断千分位是否进位,如:5680 number(4,-3) 结果为6000字符串

 

LONGLONG RAW

 LONG用于存储变长的字符串,最大长度为2GB ,因为容量上的优点多用来存储文本,字符数组以及各类文档,可使用DML语句操做LONG列进行增删改查等。可是不能再表达式,函数以及wheregroup 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_INTEGERPLS_INTEGER的子类型,具备非空约束的优点,若是指定了NULL值,则系统会报错,若是对整数数据类型须要非空约束,建议使用SIMPLE_INTEGER减小判断,而且SIMPLE_INTEGER定义时必须赋初始值,由于非空。

 

 

DATETIMESTAMP

日期类型,timestampdate类型更加准确些。

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保留字:

  DECLAREBEGINENDEXCEPTION

 

变量:

声明的变量能够赋初始值,指定非空约束,也可使用默认值,或者定义为常量,常量不会再变化而且在声明时赋值。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的事务结果。

相关文章
相关标签/搜索