码迷,mamicode.com
首页 > 数据库 > 详细

PL_SQL学习

时间:2018-08-05 14:15:42      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:lse   har   date   ros   char   index   row   eid   out   

打印输出: 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学习

标签:lse   har   date   ros   char   index   row   eid   out   

原文地址:https://www.cnblogs.com/JimKing/p/9418272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!