首页 > 代码库 > Oracle 中的PL/SQL、存储过程、触发器、函数、包(学习笔记)

Oracle 中的PL/SQL、存储过程、触发器、函数、包(学习笔记)

    一、PL/SQL是什么?

    PL/SQL(procedural language/SQL)是oracle在sql上的扩展,pl/sql不仅允许嵌入sql语言,而且可以定义常量和变量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这使得它的功能十分强大。但是移植性不好。

1. 实例1 只包括执行部分的PL/SQL块

set serveroutput on;
begin
dbms_output.put_line(‘asdasdasdas‘);
end;
/

set serverout 选项为打开显示。

dbms_output为oracle提供的包


2. 实例2 包含输入的PL/SQL块

declare 
v_name varchar2(10);
v_sal number(7,2);
begin
  select ename,sal into v_name,v_sal from emp where empno=&no;
  dbms_output.put_line(‘雇员名:‘||v_name);
  dbms_output.put_line(‘薪水:‘||v_sal);
  end;
  /

说明:首先声明了类型为varchar2的v_name变量和number的v_sal,在pl/sql语句块中执行搜索,用empno搜索出emp表的ename和sal字段的值,&no表示要在执行过程中输入empno这个参数。把查询的ename值存入v_name中,sal放入v_sal中,然后再显示出来。


3. 实例3 包含异常处理的PL/SQL块

declare 
v_name varchar2(10);
v_sal number(7,2);
begin
  select ename,sal into v_name,v_sal from emp where empno=&no;
  dbms_output.put_line(‘雇员名:‘||v_name);
  dbms_output.put_line(‘薪水:‘||v_sal);
exception
when no_data_found then
  dbms_output.put_line(‘输入数据有误!‘);
  end;
  /

这个例子前面与实例2完全相同,只是加上了异常处理部分。这是一个完整的PL/SQL块。

二、过程(存储过程)

    存储过程用于执行特定的操作。建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)。通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分数据传递到应用环境中。在sqlplus中使用create procedure命令 创建过程。

create procedure procedure_name(name varchar2,sala number) is
begin
  update emp set sal=sala where ename=name;
  end;
  /

说明: 创建一个名为procedure_name的过程,它又2个输入参数,varchar2类型的name和number类型的sala,begin与end之间的是plsql块。


本文出自 “飞鱼技术” 博客,请务必保留此出处http://flyingfish.blog.51cto.com/9580339/1583453

Oracle 中的PL/SQL、存储过程、触发器、函数、包(学习笔记)