ORACLE之PL/SQL简单基础语法学习(一)

来源:互联网 发布:云计算应用迁移 编辑:程序博客网 时间:2024/05/12 08:37
程序结构概述
 完整的PL/SQL程序结构可以分为3个部分
(1)、定义部分
以declare为标识,在该部分中定义程序要使用的常量、变量、游标和例处处理米in刚才,PL/SQL程序中所使用的定义必须在该部分集中定义
(2)、执行部分
以begin为开始标识,以end为结束标识
该部分是每个PL/SQL程序所必备的,包含了对数据库的操作语句和各种流程控制语句等
(3)、异常处理部分
  该部分包含在执行部分中,以exception为标识,对程序执行中产生的异常情况进行处理。 
        一个完整的PL/SQL程序的总体结构如下所示: 
        delacre        
  定义语句段 
        begin        
  执行语句段 
        exception     
  异常处理语句段 
        end

一、常量  
1.定义常量的语法格式  
常量名constant类型标识符[not null]:=值;  
常量名,包括后面的变量名都必须以字母开头,不能有空格,不能超过 30 个字符长度,同时不能和保留字同名,常(变)量名称不区分大小写,在字母后面可以带数字或特殊字符。括号内的not null为可选参数,若选用则表明该常(变)量不能为空值。  
2.常量的示例  
declare 
p constant number(9):=3.141592;  
begin  
 commit;  
end; 

二、基本数据类型变量 
1.基本数据类型 

类型标识符                                            说明

number                                                数组类型

int       整数型

pls_integer                                          整数型,产生溢出时出息错误

binary_integer                                    整数型,表示带符号的整数

char                                                      定长字符型,最大255个字符

varchar2                                              变长字符型,最大2000个字符

long                                                      变长字符型,最长2GB

date                                                      日期型

boolean                                              布尔型


2.基本数据类型变量的定义方法 
 
 变量名 类型标识符 [not null]:=值;  
declare  
        age number(3):=26;  
        begin  
 commit;  
 dbms_output.put_line(age); 
       end; 


三、复合数据类型变量  
1.使用%type 定义的变量  
让PL/SQL中变量的类型和数据表中的字段的数据类型一致 。示例代码: 
declare  
mydate scott.emp.hiredate%type;   //定义了名为mydate 的变量,其类型和scott.emp数据表中的 hiredate字段类型是一致  
begin  
 commit;  
end; 
2.定义记录类型变量 
declare  
type myrecord is record( myrecordnumber int, mycurrentdate date);  
定义了名为myrecord的记录类型,该记录类型由整数型的myrecordnumber和日期型的mycurrentdate基本类型变量组成, srecord
是该类型的变量。  
srecord myrecord; 
begin 
 select empno, hiredate into srecord from scott.emp where sal=1300; 
 dbms_output.put_line(srecord.mycurrentdate); 
end; 
3. 使用%rowtype定义变量 
使用%type可以使变量获得字段的数据类型,而使用%rowtype可以使变量获得整个记录的数据类型。 
        注意两者定义的不同: 
        使用%type定义变量:变量名 数据表.列名%type。 
        使用%rowtype定义变量:变量名 数据表%rowtype。 
        引用%rowtype定义的变量时,使用:变量名.列名。 

Declare  
 mytable scott.emp%rowtype;  
 begin  
  select * into mytable  
  from scott.emp  
  where sal=1300;  
  dbms_output.put_line(mytable.hiredate);  
 end;


四、表达式  
变量、常量经常需要组成各种表达式来进行运算,下面介绍在PL/SQL中常见表达式的运算规则。  
1.数值表达式  
PL/SQL 程序中的数值表达式是由数值型常数、变量、函数和算术运算符组成的,可以使用的算术运算符包括+(加) 、-(减) 、*
(乘)、/(除)和**(乘方)等。  
declare  
result integer;  
begin 
        result:=10+3*4-20+5**2;  
        dbms_output.put_line('运算结果是:'||to_char(result));  
end; 
2.字符表达式 
      字符表达式由字符型常数、变量、函数和字符运算符组成,唯一可以使用的字符运算符就是连接运算符“||”。 
3.关系表达式 
      关系表达式由字符表达式或数值表达式与关系运算符组成,可以使用的关系运算符包括以下9种: 
< 小于 
> 大于 
= 等于(不是赋值运算符:=) 
like 类似于 
in 在……之中 
<= 小于等于 
>= 大于等于 
!= 不等于 
between 在……之间 
4.逻辑表达式 
        逻辑表达式由逻辑常数、变量、函数和逻辑运算符组成,常见的逻辑运算符包括以下3 种:  
         NOT:逻辑非 
         OR:逻辑或 
         AND:逻辑与 
        逻辑表达式运算的优先次序为:NOT、AND、OR。  
5.函数  
        PL/SQL程序中提供了很多函数供扩展功能,其中最常用的数据类型转换函数有以下3个: 
        to_char:将其它类型数据转换为字符型。  
        to_date:将其它类型数据转换为日期型。  
        to_number:将其它类型数据转换为数值型。  
 
PL/SQL 程序中的流程控制语句主要有条件控制、循环控制 
一、条件控制  
1.if...then...end if 条件控制,这种条件控制的语法结构为:  
if 条件 then 
语句段; 
end if;   
2. if...then...else...end if条件控制 ,采用if...then...else...end if 条件控制的语法结构如下所示: 
if 条件 then  
  语句段1;  
else  
  语句段2;  
end if;  
3. if嵌套条件控制  
采用if嵌套条件控制的语法结构如下所示:  
        if 条件1 then  
 if 条件2 then   
         语句段1;  
 else  
          语句段2;  
 end if;   
        else  
  语句段3;  
        end if; 
二、 循环控制  
循环结构是按照一定逻辑条件执行的一组命令,PL/SQL中有4种基本循环结构 : 
1.loop…exit...end loop循环控制: 
采用loop...exit...end loop循环控制的语法结构如下所示: 
loop  
  循环语句段;  
 if 条件语句 then  
  exit;  
 else  
   退出循环的处理语句段;  
 end if;  
end loop;   
2.loop...exit...when...end loop循环控制  
采用loop...exit...when...end loop 循环控制的语法结构如下所示: 
loop  
  循环体; 
 exit when循环条件;  
end loop  
3. while...loop...end loop循环控制  
这种循环控制的语法如下: 
while 条件  
loop  
  执行语句段;  
end loop; 
4.for...in...loop...end循环控制  
采用for...in...loop...end循环控制的语法如下: 
        for 循环变量 in [reverse] 循环下界..循环上界 loop   
  循环处理语句段;   
        end loop;  
 

原创粉丝点击