ITPub博客

首页 > 数据库 > Oracle > oracle_pl_sql 实例精解-第一章 pl/sql概念

oracle_pl_sql 实例精解-第一章 pl/sql概念

原创 Oracle 作者:zuoqi_71 时间:2014-11-24 14:22:23 0 删除 编辑
oracle_pl_sql 实例精解

第一章 pl/sql概念

pl/sql = procedural language extension to sql = sql的过程式程序语言扩展

1、优点

1)多个sql语句合并为一个pl/sql时,会当作一个独立的单元发送给服务器,
之后服务器会把这些sql的执行结果返回回来,显示如果10个sql的话也只需要2次传输

2)既然是一种语言,肯定预备一些逻辑编程能力

3)将一些功能封装为一个个procedure,可以提高开发效率和安全性

2、pl/sql 分命名和匿名两种

1)匿名pl/sql语句没有名称,这样的程序不在数据库中存储,无法在后期调用

2)pl/sql语句包括3部分,声明,执行,异常处理,声明和异常处理部分是可选的
declare
declaration statements
begin
executable statements
exception
exceptoin statements
end;

3)声明部分,包括对pl/sql标识符的定义,如变量、常量、游标等

变量 = 变量名 类型;
常量 = 常量名 constant(保留字) 类型 := 常量;
每个声明后都有一个分号

4)可执行部分,这部分包含可执行的语句,允许操作声明部分所声明的变量

SET SERVEROUTPUT ON

declare
v_empno NUMBER(4);
v_ename varchar2(10); 
begin
select empno,ename
into v_empno,v_ename
from scott.emp
where empno=7369;

dbms_output.put_line('empno-name'||v_empno||'-'||v_ename);
end;

5)异常部分

SET SERVEROUTPUT ON

declare
  v_empno NUMBER(4);
  v_ename varchar2(10); 
  sv_empno number := &ssv_empno;
begin
  select empno,ename
  into  v_empno,v_ename
  from scott.emp
  where empno=sv_empno;
  
  dbms_output.put_line('---------------------------');
  dbms_output.put_line('empno-name'||v_empno||'-'||v_ename);
  dbms_output.put_line('---------------------------');
  
exception
  when no_data_found then
  dbms_output.put_line('---------------------------');  
  dbms_output.put_line('this num is not used by emp');
  dbms_output.put_line('---------------------------');
end;

6)替代变量 

使pl/sql实现与用户的交互功能

declare
  v_empno NUMBER(4);
  v_ename varchar2(10); 
begin
  select empno,ename
  into  v_empno,v_ename
  from scott.emp
  where empno=6767;
  
  dbms_output.put_line('---------------------------');
  dbms_output.put_line('empno-name'||v_empno||'-'||v_ename);
  dbms_output.put_line('---------------------------');
  
exception
  when no_data_found then
  dbms_output.put_line('---------------------------');  
  dbms_output.put_line('this num is not used by emp');
  dbms_output.put_line('---------------------------');
end;

7)练习
显示当前系统时间
SQL> begin
  2    dbms_output.put_line('today is '||to_char(sysdate,'day,yyyy-mm-dd hh24:mi:ss'));
  3  end;
  4  /
today is monday   ,2014-11-24 06:17:14

PL/SQL procedure successfully completed.



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22193071/viewspace-1344576/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-02-26

  • 博文量
    48
  • 访问量
    144626