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;
/

猜你喜欢

转载自www.cnblogs.com/JimKing/p/9418272.html