PL/SQL编程概念

pl/sql:pl/sql是oracle在标准SQL上的扩展,它不仅允许嵌入SQL语句,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误;

使用pl/sql可以提高应用程序的运行性能;
模块化的设计思想(分页的过程,转账的过程,订单的过程…);
减少网络传输量;
提高安全性;
但是pl/sql的移植性不好;比如从oracle换到db2,过程什么的都需要重新写;

开发工具:
1、sqlplus开发工具
–如果使用SQLplus创建,提示有编译错误:show error;显示错误信息;
2、pl/sql developer开发工具

案例:
往一个表里面插入数据;
创建一个表:

create table tab_1 (xingm varchar(10),mim varchar(16));

**创建存储过程:**

create or replace procedure tab_1_insert  is
begin
--执行部分
insert into tab_1(xingm,mim) values('殷守恩','123456');
end;
--or replace 表示如果创建的过程名字已经存在了,就会替换掉,使用新创建的;

调用存储过程:
有两种方式:1、exec 过程名(参数1,参数2…);
2、call 过程名(参数1,参数2…);

pl/sql基础单位是块,通过块可以编写过程,函数,触发器,包;
块是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块,要完成相对简单的应用功能,可能只需要编写一个pl/sql块,如果要实现复杂的功能,可能需要pl/sql快中嵌套其它pl/sql块;
块结构示意图:

pl/sql块有三个部分组成:定义部分,执行部分,例外部分。
declear
/*定义部分---定义常量,变量,游标,例外,复杂数据类型 [可选]*/
begin
/*执行部分 ---要执行的pl/sql语句和SQL语句[必须]*/
exception
/* 例外处理部分----处理运行的各种错误[可选]*/
end;

实例(只包括执行部分的pl/sql块):

set serveroutput on --打开输出选项,如果不打开的话,在命令界面不会出现输出信息;
begin
dbms_output.put_line('hello');
end;
--dbms_output是oracle提供的包,该包包含一些过程,put_line就是dbms_output包的一个过程

实例(包含定义部分和执行部分的pl/sql块):

declare
  v_ename varchar2(20);---定义字符串变量
  v_bianh varchar2(20);
begin
--执行部分
--通过输入的caozydm查到的caozydm,caozyxm赋值给v_ename,v_bianh
  select caozydm, caozyxm into v_bianh, v_ename from caozyxx where caozydm =&no;
  --在控制台输出v_ename,v_bianh
  dbms_output.put_line('雇员编号:'||v_bianh||'雇员信息:'||v_ename);
end;

实例(包含定义部分,执行部分和例外部分):
为了避免pl/sql程序运行错误,应该对错误进行处理,这个很有必要;
比如在上一个实例中,我们如果输入了不存在的编号,程序就会报错,终止;这个时候我们就应该做例外处理。
甚至有些时候,我们还需要利用异常来进行另外的逻辑处理;
oracle事先预定义了一些例外, no_data_found 就是找不到数据的例外

-定义部分
declare
      v_ename varchar2(20);---定义字符串变量
      v_bianh varchar2(20);
--执行部分
    begin
    --通过输入的caozydm查到的caozydm,caozyxm赋值给v_ename,v_bianh
      select caozydm, caozyxm into v_bianh, v_ename from caozyxx where caozydm =&no;
      --在控制台输出v_ename,v_bianh
      dbms_output.put_line('雇员编号:'||v_bianh||'雇员信息:'||v_ename);
  --异常处理
      exception
      when no_data_found then
      dbms_output.put_line('输入有误');
    end;

编写规范:
1、注释
单行注释 :–
多行注释 : //
2、表示符号的命名规范
当定义变量时,建议用v_作前缀;
定义常量时,建议 c_;
定义游标,建议_cursor作后缀;
定义例外,建议用e_作为前缀;

猜你喜欢

转载自blog.csdn.net/enbaoIT/article/details/89025165