1 declare :
用作声明变量,
declare
v_name varchar2(20); //声明长度为20的可变字符串 v_name
begin
v_name:='myname'; // 对v_name进行赋值
dbms_output.put_line(v_name); // 打印
end;
/
---变量声明的规则:
1 变量名不能使用保留字,如 from ,select 等
2 第一个字符必须是字母
3 变量名最多包涵30个字符
4 不要与数据库或表同名
5 每一行只能声明一个变量
-- 变量声明 使用%type属性 .
变量多用作保存某张表某个字段的值 ,例如 生命的 v_sal number(7,2) 用来保存emp 中的 sal number (7,2).
但是随着表的变动,字段类型可能发生变化, 这样就要对v_sal的类型进行修改 . 使用%type 可以简化此问题
declare
v_empno number(4);
v_empno2 emp.empno%type;
v_empno3 v_empno2%type;
begin
dbms_output.put_line('Text');
end;
/
--常用变量类型
1 binary_integer: 整数 ,主要用来计数而不是用来表示字段类型
2 number :数字类型
3 char 定长字符串
4 varchar2 变长字符串
5 date 日期
6 long 长字符串 ,最长2GB
boolean 布尔类型 ,可以取值为true,false 和null 值
--复杂的变量类型 :
1 table (可以大致理解为下表可取负值的数组)
declare
type type_table_emp_empno is table of emp.empno%type index by binary_integer;
v_empnos type_table_emp_empno;
begin
v_empnos(0):=7369;
v_empnos(2):=7839;
v_empnos(-1) := 9999;
dbms_output.put_line(v_empnos(-1));
end;
/
使用table 类型的步骤
1) 声明一个新的类型 如
type type_table_emp_empno is table of emp.empno%type index by binary_integer;
这里,声明了一个 type_table_emp_empno 类型, 对这个类型的描述是, 它是 emp.empno%type 类型的table
2)使用新声明的类型创建变量
v_empnos type_table_emp_empno;
2 Record (有点类似于 类)
declare
type type_record_dept is record
(
deptno dept.deptno%type,
dname dept.dname%type,
loc dept.loc%type
);
v_temp type_record_dept;
begin
v_temp.deptno:=50;
v_temp.dname:='aaaa';
v_temp.loc:='bj' ;
dbms_output.put_line(v_temp.deptno ||' ' ||v_temp.dname);
end;
/
或者 完全依照某个表来定义, 这样当表的字段变化时,该类也跟着变化
declare
v_temp dept%rowtype;
begin
v_temp.deptno :=50;
v_temp.dname:='aaaa';
v_temp.loc:='bj';
dbms_output.put_line(v_temp.deptno || ' '|| v_temp.dname);
end;
/
2 exception 异常:
此处与java类似
declare
v_num number := 0;
begin
v_num:=2/v_num;
dbms_output.put_line(v_num);
exception
when others then // when others 包含所有异常情况
dbms_output.put_line('error');
end;
/