前言:
任何一门程序语言都有自己的变量,程序结构,以反应客观实际需求和应用。在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) |