PL/SQL

9 篇文章 0 订阅

一、PL/SQL的特点

1、运行在服务器端

         1)缺点:消耗服务器端CUP

         2)优点:兼容性更好、性能稍好;

2、锁(依赖关系造成的锁)

共享锁、空锁、独占锁。

3、某些功能无法替代

二、PL/SQL块结构

         PL/SQL块由三个部分组成:声明部分、执行部分、异常处理部分。

         Declare(可选)

         ……

begin

……

exception (可选)

……

end;

1、只包含执行块的PL/SQL块。

SQL> begin

  2    dbms_output.put_line('OK');

  3   end;

  4   /(执行PL/SQL块)

PL/SQL 过程已成功完成。

SQL> set serveroutput on(打开输出缓冲区)

           注:dbms_output是用于输出信息的PL/SQL系统包,是包中的过程。

2、包含声明部分和执行部分的PL/SQL块。

         SQL> select * from empl;

 

ENO        ENAME                DEPT                                  SAL

---------- -------------------- ------------------------------ ----------

1001       jack                 sa                                   8900

1002       jim                  sb                                   5900

1003       tom                  sc                                   8000

SQL> declare

  2    v_name varchar2(20);

  3  begin

  4   select ename into v_name from empl where eno=&no;

  5   dbms_output.put_line('雇员名'||v_name);

  6  end;

  7  /

输入 no 的值:  1001

原值    4:  select ename into v_name from empl where eno=&no;

新值    4:  select ename into v_name from empl where eno=1001;

雇员名jack

3、完整的PL/SQL块。

SQL> declare

  2   v_ename varchar2(20);

  3  begin

  4   select ename into v_ename from empl where eno=&no;

  5   dbms_output.put_line('雇员名'||v_ename);

  6   exception

  7    when no_data_found then

  8     dbms_output.put_line('请输入正确的雇员名');

  9  end;

 10  /

输入 no 的值:  1

原值    4:  select ename into v_ename from empl where eno=&no;

新值    4:  select ename into v_ename from empl where eno=1;

请输入正确的雇员名

三、变量

1、标识符

标识符不能超过30个字符。

第一个字符必须是字母。

不分大小写。

不能用’-‘;

不能是SQL保留字

2、复合变量

1)记录类型

declare

 type test_rec  is record(

 code varchar2(10),

 name varchar2(30) not null :='a book'

);

 v_book test_rec;

begin

 v_book.code:='123';

 v_book.name:='c++';

 dbms_output.put_line(v_book.code||v_book.name);

end;

/

2%Type

SQL> declare

  2    v_ename empl.ename%type;

  3    v_dept empl.dept%type;

  4    v_sal empl.sal%type;

  5   begin

  6    select ename,dept,sal into v_ename,v_dept,v_sal from empl where eno=&no;

  7    dbms_output.put_line('员工姓名:'||v_ename);

  8    dbms_output.put_line('员工部门:'||v_dept);

  9    dbms_output.put_line('员工薪水:'||v_sal);

 10   end;

 11   /

输入 no 的值:  1001

原值    6:   select ename,dept,sal into v_ename,v_dept,v_sal from empl where eno=&no;

新值    6:   select ename,dept,sal into v_ename,v_dept,v_sal from empl where eno=1001;

员工姓名:jack

员工部门:sa

员工薪水:8900

3%rowtype

SQL> declare

  2   v_emp empl%rowtype;

  3  begin

  4   select * into v_emp from empl where rownum=1;

  5   dbms_output.put_line('eno:'||v_emp.eno);

  6   dbms_output.put_line('ename:'||v_emp.ename);

  7  end;

  8  /

eno:1001

ename:jack

3、变量的作用范围(同义词的道理一样,优先级)

delcare

         num number(8):=100;

begin

         declare

         num number(8):=1000;

         begin

                   dbms_output.put_line(num);

         end;

end;

/

 

四、注释

1)‘’单行注释。

2/*****************************/多行注释。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值