Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51998
  • 博文数量: 23
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 281
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-04 16:00
文章分类

全部博文(23)

文章存档

2014年(19)

2008年(1)

2007年(3)

我的朋友

分类: Oracle

2014-05-08 15:03:17

   前言:   
           任何一门程序语言都有自己的变量,程序结构,以反应客观实际需求和应用。在PL/SQL中变量分为两类,简单变量和复合变量,本文介绍如何使用简单变量。


PL/SQL变量的分类:
一、简单变量
二、复合变量


正文

一、简单变量

(1)简单变量的数据类型:
   1、binary_integer:整数,主要用来计算而不是用来表示字段类型
   2、Number:数字类型
   3、char:定长字符串
   4、varchar2:变长字符串
   5、long:长字符串,最长2G
   6、date :日期型
   7、boolean: 布尔型,可以使用使用true,false,null.默认为空

(2)变量的命名
   1、一般情况下,变量以'v_'开头;
   2、变量名的组成:字母、数字、下划线,并以字母开头;
   3、变量名不能使用ORACLE保留字,如:create,drop,select;
   4、变量名长度不超过32位;

(3)变量的声明
   1、在declare模块中声明变量;
   2、变量声明时可以赋初值,也可以不赋初值;
   3、变量声明时可以指定not null约束,此时变量必须指定初始值;
   4、变量可以声明为常量,通过constant关键字,如:V_PI constant number := 3.1415926;

 (4)变量的声明--%type的使用
   1、变量声明时,用%type来定义变量的数据类型;
   2、%type用指定的表的字段类型,定义变量的数据类型,如:v_name emp.name%type;
   3、优点是,变量的数据类型与表字段类型同步变化;

 (5)变量声明语法:
   1>变量名 数据类型;
              
             e.g: v_name varchar2(20);

   2>变量名 数据类型 := 变量的值;
 
            e.g: v_name varchar2(20) := 'HanGuo';

   3>变量名 数据类型 not null := 变量的值;  
      
            e.g: v_name varchar2(20) not null := 'China';

   3>变量名 constant 数据类型 := 变量的值;  

            e.g: V_PI constant number := 3.14;

   4>变量名 表名.字段名%type;               

           e.g: v_name emp.name%type;


   5>变量名 表名.字段名%type := 变量的值;   
   
           e.g: v_name emp.name%type := 'HanGuo';



实例演习:

  1、在declare中声明变量;
     declare
       v_sno number;
       v_sname varchar2(20);
     begin
       v_sno := 101;
       v_sname := 'YeCheng';
       dbms_output.put_line(v_sno);
       dbms_output.put_line(v_sname);
       dbms_output.put_line('ID of the student is '||v_sno||' , the name is '||v_sname||';');
     end;

  2、在变量声明的同时赋初值;
     declare
       v_sno number := 102;
       v_sname varchar2(20):= 'YeCheng';
     begin
       dbms_output.put_line(v_sno);
       dbms_output.put_line(v_sname);
       dbms_output.put_line('ID of the student is '||v_sno||' , the name is '||v_sname||';');
     end;
  3、变量声明时用not null约束;
     declare
       v_sno number not null := 102;     --必须给定初值,否则报错。
       v_sname varchar2(20):= 'YeCheng';
     begin
       dbms_output.put_line(v_sno);
       dbms_output.put_line(v_sname);
       dbms_output.put_line('ID of the student is '||v_sno||' , the name is '||v_sname||';');
     end;
  4、变量声明为常量;

     declare
       V_PI constant number  := 3.1415926;      --V_PI是一个常量,不可在程序中,赋予新值。
     begin
       dbms_output.put_line(V_PI);
       dbms_output.put_line('The value of the V_PI is '||V_PI||';');
     end;


  5、给常量V_PI在程序中重新赋予值时的报错如下:

     SQL>      declare
       2         V_PI constant number  := 3.1415926;
       3       begin
       4         V_PI := 10;
       5         dbms_output.put_line(V_PI);
       6         dbms_output.put_line('The value of the V_PI is '||V_PI||';');
       7       end;
       8  /
          V_PI := 10;
          *
     ERROR at line 4:
     ORA-06550: line 4, column 8:
     PLS-00363: expression 'V_PI' cannot be used as an assignment target
     ORA-06550: line 4, column 8:
     PL/SQL: Statement ignored
  
   6、综合例子
     declare
       v_sno number := 102;
       v_sname varchar2(20):= 'YeCheng';
       v_sex char(6);
       v_addr long;
       v_date date;
       v_binary_integer binary_integer;
       v_boolean_t boolean;
     begin
       v_sex := 'femal';
       v_addr := 'road 12 Haiding Area,BeiJing of china';
       v_date := sysdate;
       v_binary_integer := 20;
       v_boolean_t := true;
       dbms_output.put_line(v_sno);
       dbms_output.put_line(v_sname);
       dbms_output.put_line(v_sex);
       dbms_output.put_line(v_addr);
       dbms_output.put_line(v_date);
       dbms_output.put_line(v_binary_integer);
       dbms_output.put_line('ID of the student is '||v_sno||' , the name is '||v_sname||';');
     end;

   7、变量的声明--%type的使用

     declare
       v_sname s.sname%type;    --变量【v_name】的数据类型随着表【S】的字段【sname】的数据类型变化而变化。
     begin
       select sname into v_sname from s where sno=4;
       dbms_output.put_line(v_sname);
       dbms_output.put_line('The name of The student is '||v_sname||';');
     end;

阅读(199) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~