知识大全 PL/SQL基础教程(二)

Posted 变量

篇首语:我认为人生最美好的主旨和人类生活最幸福的结果,无过于学习了。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PL/SQL基础教程(二)相关的知识,希望对你有一定的参考价值。

PL/SQL基础教程(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  变量和常量

  变量存放在内存中以获得值 能被PL/SQL块引用 你可以把变量想象成一个可储藏东西的容器 容器内的东西是可以改变的

  声明变量

  变量一般都在PL/SQL块的声明部分声明 PL/SQL是一种强壮的类型语言 这就是说在引用变量前必须首先声明 要在执行或异常处理部分使用变量 那么变量必须首先在声明部分进行声明

  声明变量的语法如下

  Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]

  注意:可以在声明变量的同时给变量强制性的加上NOT NULL约束条件 此时变量在初始化时必须赋值

  给变量赋值

  给变量赋值有两种方式

   直接给变量赋值

  X:= ;

  Y=Y+(X* );

   通过SQL SELECT INTO 或FETCH INTO给变量赋值

  SELECT SUM(SALARY) SUM(SALARY* )

  INTO TOTAL_SALARY TATAL_MISSION

  FROM EMPLOYEE

  WHERE DEPT= ;

  常量

  常量与变量相似 但常量的值在程序内部不能改变 常量的值在定义时赋予 他的声明方式与变量相似 但必须包括关键字CONSTANT 常量和变量都可被定义为SQL和用户定义的数据类型

  ZERO_VALUE CONSTANT NUMBER:= ;

  这个语句定了一个名叫ZERO_VALUE 数据类型是NUMBER 值为 的常量

  标量(scalar)数据类型

  标量(scalar)数据类型没有内部组件 他们大致可分为以下四类

   number

   character

   date/time

   boolean

  表 显示了数字数据类型 表 显示了字符数据类型 表 显示了日期和布尔数据类型

  表 Scalar Types:Numeric

  Datatype Range Subtypes description

  BINARY_INTEGER NATURAL

  NATURAL

  NPOSITIVE

  POSITIVEN

  SIGNTYPE

  用于存储单字节整数

  要求存储长度低于NUMBER值

  用于限制范围的子类型(SUBTYPE):

  NATURAL:用于非负数

  POSITIVE:只用于正数

  NATURALN:只用于非负数和非NULL值

  POSITIVEN:只用于正数 不能用于NULL值

  SIGNTYPE:只有值: 或

  NUMBER E E DEC

  DECIMAL

  DOUBLE

  PRECISION

  FLOAT

  INTEGERIC

  INT

  NUMERIC

  REAL

  SMALLINT 存储数字值 包括整数和浮点数 可以选择精度和刻度方式 语法

  number[( [ ])]

  缺省的精度是 scale是

  PLS_INTEGER    与BINARY_INTEGER基本相同 但采用机器运算时 PLS_INTEGER提供更好的性能

  表 字符数据类型

  datatype rang subtype description

  CHAR 最大长度 字节 CHARACTER 存储定长字符串 如果长度没有确定 缺省是

  LONG 最大长度 字节   存储可变长度字符串

  RAW 最大长度 字节   用于存储二进制数据和字节字符串 当在两个数据库之间进行传递时 RAW数据不在字符集之间进行转换

  LONGRAW 最大长度    与LONG数据类型相似 同样他也不能在字符集之间进行转换

  ROWID 个字节   与数据库ROWID伪列类型相同 能够存储一个行标示符 可以将行标示符看作数据库中每一行的唯一键值

  VARCHAR 最大长度 字节 STRINGVARCHAR 与VARCHAR数据类型相似 存储可变长度的字符串 声明方法与VARCHAR相同

  表 DATE和BOOLEAN

  datatype range description

  BOOLEAN TRUE/FALSE 存储逻辑值TRUE或FALSE 无参数

  DATE / / BC 存储固定长的日期和时间值 日期值中包含时间

  LOB数据类型

  LOB(大对象 Large object) 数据类型用于存储类似图像 声音这样的大型数据对象 LOB数据对象可以是二进制数据也可以是字符数据 其最大长度不超过 G LOB数据类型支持任意访 问方式 LONG只支持顺序访问方式 LOB存储在一个单独的位置上 同时一个 LOB定位符 (LOB locator)存储在原始的表中 该定位符是一个指向实际数据的指针 在PL/SQL中操作LOB数据对象使用ORACLE提供的包 DBMS_LOB LOB数据类型可分为以下四类

   BFILE

   BLOB

   CLOB

   NCLOB

  操作符

  与其他程序设计语言相同 PL/SQL有一系列操作符 操作符分为下面几类

   算术操作符

   关系操作符

   比较操作符

   逻辑操作符

  算术操作符如表 所示

  operator operation

  + 加

   减

  / 除

  * 乘

  ** 乘方

  关系操作符主要用于条件判断语句或用于where子串中 关系操作符检查条件和结果是否为true或false 表 是PL/SQL中的关系操作符

  operator operation

  < 小于操作符

  <= 小于或等于操作符

  > 大于操作符

  >= 大于或等于操作符

  = 等于操作符

  != 不等于操作符

  <> 不等于操作符

  := 赋值操作符

  表 显示的是比较操作符

  operator operation

  IS NULL 如果操作数为NULL返回TRUE

  LIKE 比较字符串值

  BEEEN 验证值是否在范围之内

  IN 验证操作数在设定的一系列值中

  表 显示的是逻辑操作符

  operator operation

  AND 两个条件都必须满足

  OR 只要满足两个条件中的一个

  NOT 取反

  执行部分

  执行部分包含了所有的语句和 表达式 执行部分以关键字BEGIN开始 以关键字EXCEPTION结束 如果EXCEPTION不存在 那么将以关键字END结束 分号分隔每一条语 句 使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值 执行部分的错误将在异常处理部分解决 在执行部分中可以使用另一个PL/SQL程序块 这种程序块被称为嵌套块

  所有的SQL数据操作语句都可以用于执行部分 PL/SQL块不能再屏幕上显示SELECT语句的输出 SELECT语句必须包括一个INTO子串或者 是游标的一部分 执行部分使用的变量和常量必须首先在声明部分声明 执行部分必须至少包括一条可执行语句 NULL是一条合法的可执行语句 事物控制语句 MIT和ROLLBACK可以在执行部分使用 数据定义语言(Data Definition language)不能在执行部分中使用 DDL语句与EXECUTE IMMEDIATE一起使用或者是DBMS_SQL调用

  执行一个PL/SQL块

  SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行 如下面的例子所示

  declare

  v_m_percent constant number:= ;

  begin

  update emp

  set m=sal*v_m_percent

  where deptno= ;

  end

  SQL> /

  PL/SQL procedure successfully pleted

  SQL>

  命名的程序与匿名程序的执行不同 执行命名的程序块必须使用execute关键字

  create or replace procedure update_mission

  (v_dept in number v_pervent in number default ) is

  begin

  update emp

  set m=sal*v_percent

  where deptno=v_dept;

  end

  SQL>/

  Procedure created

  SQL>execute update_mission( );

  PL/SQL procedure successfully pleted

  SQL>

  如果在另一个命名程序块或匿名程序块中执行这个程序 那么就不需要EXECUTE关进字

  declare

  v_dept number;

  begin

  select a deptno

  into v_dept

  from emp a

  where job= PRESIDENT

  update_mission(v_dept);

  end

  SQL>/

  PL/SQL procedure successfully pleted

cha138/Article/program/Oracle/201311/16606

相关参考

知识大全 OraclePL/SQL语言基础

OraclePL/SQL语言基础  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL是O

知识大全 PL/SQL最差实践

PL/SQL最差实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  超长的PL/SQL代码  影

知识大全 PL/SQL程序结构(组图)

PL/SQL程序结构(组图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是PL/SQL程

知识大全 pl/sql查询字段为科学计数法

  从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法  pl/sql  从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法后经

知识大全 PL/SQL中用光标查询多条记录

PL/SQL中用光标查询多条记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL光标

知识大全 PL/SQL用光标查询多条记录

PL/SQL用光标查询多条记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL光标为

知识大全 全面探讨PL/SQL的复合数据类型

全面探讨PL/SQL的复合数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL有

知识大全 PL/SQL命名作用域的窍门

PL/SQL命名作用域的窍门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多PL/SQL程序

知识大全 PL/SQL开发中动态SQL的使用方法

PL/SQL开发中动态SQL的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  内容摘要在

知识大全 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项

动态SQL和PL/SQL的EXECUTEIMMEDIATE选项  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来