PL_SQL学习

Posted JimKing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
/

 

以上是关于PL_SQL学习的主要内容,如果未能解决你的问题,请参考以下文章

Oracle的PL_SQL的结构

Oracle的PL_SQL的异常处理

pl_sql develope连接远程数据库的方法

PL_sql如何执行oracle存储过程

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段