星辰日月00

欲多则心散,心散则志衰,志衰则思不达也!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、PL/SQL语言基础
1.PL/SQL块简介
--构成PL/SQL程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成的,
--每个语句块完成特定的功能,语句块可以具有名字(命名块),也可以不具有
名字(匿名块),语句块之间还可以相互嵌套。
(1)块结构

DECLARE
 Declarations   --定义部分:主要定义程序中所要使用到的常量、变量、数据类型、游标、异常处理等。
----------------------------------------------------
BEGIN        --执行部分:它是PL/SQL块的功能实现部分,该部分通过一系列语句和流程控制,
 Executable code   --实现数据查询、数据操作、事务控制、游标处理等数据库操作的功能。
-------------------若无EXCEPTION,则以END结束--------------------------------
EXCEPTION 
 Exceptional handlers   --异常处理部分(可选):该部分用于处理该PL/SQL块执行过程中产生的错误。
END;

 


(2)匿名块
--PL/SQL匿名块,是指动态生成,只能执行一次的块,它没有名字,不能由其他应用程序调用。

 1 SET SERVEROUTPUT ON   --环境变量SERVEROUTPUT要设置为ON,否则不显示。
 2  BEGIN
 3   DBMS_OUTPUT.PUT_LINE('This a minimum anonymous block');
 4  END;
 5 DECLARE
 6  v_sname VARCHAR2(10);
 7 BEGIN
 8  SELECT name INTO v_sname
 9   FROM Students WHERE student_id = 10318;
10  DBMS_OUTPUT.PUT_LINE('学生姓名:' || v_sname);
11 END;
12 DECLARE
13  v_sname VARCHAR2(10);
14 BEGIN
15  SELECT name INTO v_sname
16   FROM Students WHERE student_id = 10318;
17  DBMS_OUTPUT.PUT_LINE('学生姓名:' || v_sname);
18 EXCEPTION
19  WHEN NO_DATA_FOUND THEN
20   DBMS_OUTPUT.PUT_LINE('你输入的学号不存在!');
21 END;

 

(3)命名块
--PL/SQL命名块是指一次编译可多次执行的PL/SQL程序(可嵌套),包括自定义函数、过程、包、触发器等。
--它们编译后放在服务器中,由应用程序或系统在特定条件下调用执行。

二、PL/SQL基本语法要素
1.字符集
 大小写英文字母,包括A-Z和a-z。
 数字,包括0-9.
 空白符,包括制表符、空格和回车符。
 符号,包括:!@#¥%等。
2.标识符
 标识符(Identifier)用于定义PL/SQL变量、常量、异常、游标名称、
 游标变量、参数、子程序名称和其他的程序单元名称等。必须以字母开头。
3.文字
 文字(Literal)是指不能作为标识符的数字型、字符型、日期型和布尔型数据。
(1)数字型文字
数字型文字分为整数与实数两类。
注意:SQL语句和PL/SQL程序中均可引用:2012、3.14.
   只有PL/SQL程序中可以引用:-10E4、5.123e-6、7*10**2。
(2)字符型文字
字符型文字是用单元引号括起来的一个或多个字符,区分大小写。
注意:如果字符型文字中本身包含单引号,则用两个连续的单引号进行转义。
   在Oracle 10g中,如果字符串文本包含单引号,那么还可以使用其他分隔符(如[],(),<>等)赋值。
   'I am student'  
   'I''m a student' 或者 q'[I'm a student.]'。
(3)日期型文字
日期型数值也必须放在单引号之中。
'01-04月-1963'、'11-JAN-1990'、'2008-01-01 08:00:01'。
(4)布尔型文字
包括:TRUE、FALSE、NULL这三个值。
4.分隔符Delimiter
--分隔客人由具有特定含义的单个字符或组成字符构成。
5.注释Comment
注释分为:单行注释--
     多行注释/* …………  */

三、变量及其数据类型
PL/SQL变量的数据类型包括标量Scalar类型、复合Composite类型、
引用Reference类型和LOB(Large Object)类型等四种类型。
1.标量变量
--标量变量具有数字型、字符型、日期时间型、布尔型等多种数据类型。标量变量只能存放单个数据的变量。
(1)数字类型:NUMBER、PLS_INTEGER、BINARY_INTEGER、BINARY_DOUBLE、BINARY_FLOAT
(2)字符类型:CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR2
        LONG、RAW、LONG RAW、ROWID、UROWID   
(3)日期时间类型:DATE、TIMESTAMP和INTERVAL。
(4)布尔类型
2.复合变量
--复合类型的变量包含一个或多个标题变量,这些变量被称为复合类型的属性。
3.引用变量
--REF CURSOR类型和REF类型。PL/SQL中的引用变量与C/C++语言中指针类似,可以指向不同的存储位置。
4.LOB变量(大对象)
包括:CLOB、BLOB、NCLOB、BFILE等。
5.另外,为了使PL/SQL代码中定义的变量,能与数据库中的某一列或某一行的数据类型相联系,

Oracle提供了%TYPE和 %ROWTYPE的变量定义方式
DECLARE
 v_name students.name%TYPE;
DECLARE
 v_student students %ROWTYPE; 

--即变量v_student的数据类型与students表定义的数据类型一致。
--如果students表定义的数据类型发生改变,那么变量v_student的数据类型也随之改变。

posted on 2012-03-20 11:34  星辰日月00  阅读(399)  评论(0编辑  收藏  举报