龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

OraclePL编程语言的优点介绍(1)(2)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
PL/SQL 块简介 OraclePL/SQL块是构成程序的基本单位,每一个块都包含有PL/SQL和SQL语句,典型的PL/SQL代码块包含如下结构: (1).声明部分 (2)可执行部分 (3)异常处

PL/SQL 块简介

OraclePL/SQL块是构成程序的基本单位,每一个块都包含有PL/SQL和SQL语句,典型的PL/SQL代码块包含如下结构:

(1).声明部分

(2)可执行部分

(3)异常处理

语法结构如下:

[DECLARE

declarations]—声明部分

BEGIN

executable statements---可执行部分

[EXCEPTION –异常处理

  1. handlers]  
  2. END;  

代码示例:

DECLARE

qty_on_hand NUMBER(5); --程序声明部分,定义变量,游标和自定义常量

  1. BEGIN   
  2. SELECT quantity INTO qty_on_hand -  
  3. FROM Products -  
  4. WHERE product = '芭比娃娃' -  
  5. FOR UPDATE OF quantity; -  
  6. IF qty_on_hand > 0 THEN -  
  7. UPDATE Products SET quantityquantity = quantity + 1 - 

WHERE product = '芭比娃娃'; 程序执行部分

  1. INSERT INTO purchase_record -  
  2. VALUES ('已购买芭比娃娃', SYSDATE); -  
  3. END IF; -  
  4. COMMIT; - 

EXCEPTION /* 异常处理语句 * / -----------------------异常处理

  1. WHEN OTHERS THEN -  
  2. DBMS_OUTPUT.PUT_LINE('出错:'|| SQLERRM); -  
  3. END; 

变量和常量

OraclePL/SQL 块中可以使用变量和常量

在声明部分声明,使用前必须先声明

声明时必须指定数据类型,每行声明一个标识符

在可执行部分的 SQL 语句和过程语句中使用

声明变量和常量的语法

  1. identifier [CONSTANT] datatype [NOT NULL]   
  2. [:= | DEFAULT expr];  

给变量赋值有两种方法

使用赋值语句 :=

使用 select into 语句

代码示例:

  1. DECLARE  
  2. icode VARCHAR2(6);   
  3. p_catg VARCHAR2(20);   
  4. p_rate NUMBER;   
  5. c_rate CONSTANT NUMBER :0.10;   
  6. BEGIN  
  7. ...  
  8. icode :'i205';   
  9. SELECT p_category, itemrate * c_rate  
  10. INTO p_catg, p_rate  
  11. FROM itemfile WHERE itemcode = icode;   
  12. ...  
  13. END; 

数据类型

OraclePL/SQL支持的内置数据类型有如下几种:

如图:

标量类型

数字

字符

CHAR

VARCHAR2

LONG

RAW

LONG RAW

结构如图:

日期时间类型

日期时间类型

存储日期和时间数据

常用的两种日期时间类型

DATE

TIMESTAMP

布尔类型

此类别只有一种类型,即BOOLEAN类型

用于存储逻辑值(TRUE、FALSE和NULL)

不能向数据库中插入BOOLEAN数据

不能将列值保存到BOOLEAN变量中

只能对BOOLEAN变量执行逻辑操作

如图:

LOB类型

用于存储大文本、图像、视频剪辑和声音剪辑等非结构化数据。

LOB数据类型可存储最大 4GB的数据。

LOB 类型包括:

BLOB 将大型二进制对象存储在数据库中

CLOB 将大型字符数据存储在数据库中

NCLOB 存储大型UNICODE字符数据

BFILE 将大型二进制对象存储在操作系统文件中

LOB 类型的数据库列仅存储定位符,该定位符指向大型对象的存储位置

DBMS_LOB程序包用于操纵 LOB 数据

代码示例:

  1. SET SERVEROUTPUT ON  
  2. DECLARE  
  3. clob_var CLOB;   
  4. amount INTEGER;   
  5. offset INTEGER;   
  6. output_var VARCHAR2(100);   
  7. BEGIN  
  8. SELECT chapter_text INTO clob_var   
  9. FROM my_book_text  
  10. WHERE chapter_id=5;  

amount := 24; -- 要读取的字符数

offset := 1; -- 起始位置

  1. DBMS_LOB.READ(clob_var,amount,offset,output_var);   
  2. DBMS_OUTPUT.PUT_LINE(output_var);   
  3. END;   

文章出自:http://database.csdn.net/page/08155ea6-cb32-4167-ad08-022873597ded

精彩图集

赞助商链接