PL_SQL学习

打印输出: dbms_output.put_line(‘AA‘); 

 显示服务器输出信息  set serveroutput on; 

 

打印出eid=1的员工姓名:

declare v_name varchar2(20);begin select ename into v_name from emp where eid = 1; dbms_output.put_line(v_name);end;/

 

抛出异常:

declare v_num number := 0;begin v_num := 2/v_num; dbms_output.put_line(v_num);exception when others then dbms_output.put_line(‘error‘);end;/

 

使用%type进行目标类型赋值(若表字段类型改变时变量的类型也会实时更改)

declare v_eid emp.eid%type; v_ename emp.ename%type; v_ename2 v_ename%type;

 

常用变量类型

1. binary_integer::整数,主要用来计数而不是用来表示字段类型。

2. number:数字类型,可以表示整数和小数。

3. char:定长字符串。

4. varchar2:变长字符串

5. date:日期

6. long:长字符串,最长2GB

7. boolean:布尔类型(true,false,null值)

 

复合数据类型:

Table变量类型(类比java中的数组)

declare -- 首先声明名字为type_table_emp_eid类型的数组 type type_table_emp_eid is table of EMP.EID%type index by binary_integer; v_eids type_table_emp_eid;begin v_eids(0) := 12; v_eids(1) := 11; v_eids(2) := 2; v_eids(-1) := 6; dbms_output.put_line(v_eids(-1));end;
/

 

Record变量类型(类比java中的类)

declare type type_record_emp is record ( eid emp.eid%type, ename emp.ename%type, cid emp.cid%type ); v_temp type_record_emp;begin v_temp.eid := 4; v_temp.ename := ‘rose‘; v_temp.cid := 4; dbms_output.put_line(v_temp.eid || ‘-‘ || v_temp.ename);end;/

 

使用%rowtype声明record变量(表结构发生变化时,rocord变量也会实时变化)

接下来是上面代码的优化版:

declare v_temp emp%rowtype;begin v_temp.eid := 4; v_temp.ename := ‘rose‘; v_temp.cid := 4; dbms_output.put_line(v_temp.eid || ‘-‘ || v_temp.ename);end;/

 

PL_SQL里的select查询必须和into一块用,而且保证有且只有一条记录

declare v_ename emp.ename%type; v_cid emp.cid%type;begin select ename,cid into v_ename,v_cid from emp where eid = 1; dbms_output.put_line(v_ename || ‘-‘ ||v_cid);end;/

 

select 与 %rowtype的联合运用

declare v_emp emp%rowtype;begin select * into v_emp from emp where eid = 1; dbms_output.put_line(v_emp.eid || ‘-‘|| v_emp.ename || ‘-‘ || v_emp.cid);end;/

 

相关文章