经典plsql例子

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

setserveroutput on;

--计算两个整数的和与这两个整数的差的商

declare

aint:=100;

bint:=200;

c number;

begin

c:=(a+b)/(a-a);

dbms_output.put_line(c);

exception

whenzero_divide then

dbms_output.put_line('除数不能为零!');

end;

/

declare

Num_sal number; --声明一个数值变量

Var_ename varchar2(20); --声明一个字符串变量

begin

select ename,sal into Var_ename,Num_sal from scott.emp where empno=7369; --检索指定的值并保存在变量中

dbms_output.put_line(Var_ename||'的工资是'||Num_sal); --输出变量的值end;

/

--简单的插入一条语句

create or replace procedure pro1 is

begin

insert into scott.emp(empno,ename)values(1111,'1111');

end;

/

exec pro1;

select * from scott.emp;

--删除一条语句(传参)

create procedure pro2(in_empno number) is

begin

delete from emp where empno=in_empno;

end;

/

--简单的插入一条语句(传参)

create or replace procedure pro3(in_empnonumber,in_ename varchar2) is

begin

insert into scott.emp(empno,ename)values(in_empno,in_ename);

end;

/

declare

--定义变量的格式是变量名称变量的类型

v_enamevarchar2(8);

begin

select ename into v_ename from emp where empno=&empno; --将查询到的值存入v_ename变量中

--输出v_ename

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

end;

/

--将上面的块改成过程

create procedure pro4(v_in_empno number) is

v_enamevarchar2(8);

begin

selectename into v_ename from emp where empno=v_in_empno;

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

end;

/

--编写一个过程,实现输入雇员名,新工资可以修改雇员的工资

create procedure pro5(in_ename in varchar2,in_newsal in number) is

begin

updateemp set sal=in_newsal where ename = in_ename;

end;

/

--编写一个过程,可以接受id和薪水,更新薪水,如果id不存在,需要在exception中捕获,并给出提示!

create or replace procedure pro6(in_empnonumber,in_sal number) is

v_enamevarchar2(32);

v_empno number;

begin

select empno into v_empno from emp where empno = in_empno; --此条语句为了实现在exception中可以抛出no_data_found

updateemp set sal = in_sal where empno = in_empno;

exception

whenno_data_found then

dbms_output.put_line('您输入的编号有误!');

end;

/

--编写一个函数,可以根据接受用户名并返回用户的年薪

create or replace function fun1(in_ename varchar2)

return number is

--定义一个变量来接受年薪

v_annual_sal number;

begin

select (sal+nvl(comm,0))*13 into v_annual_sal from emp where ename=in_ename; returnv_annual_sal;

end;

select fun1('SMITH') from dual;

--定义一个包,该包有一个过程,该过程可以接收用户名和新的薪水(将用于通过用户名去更新薪水),

--还有一个函数,该函数可以接受一个用户名(将用于实现得到该用户的年薪是多少)

create or replace package mypackage1 is

--声明一个过程

procedure pro1(in_ename varchar2,in_newsal number);

--声明一个函数

function fun1(in_ename varchar2) return number;

end;

/

--编写一个包体的案例

create or replace package body mypackage1 is

--实现过程

procedure pro1(in_ename varchar2,in_newsal number) is

begin

updateemp set sal=in_newsal where ename = in_ename;

end;

--实现函数

function fun1(in_ename varchar2) return number is

v_annual_sal number;

begin select(sal+nvl(comm,0))*13 into v_annual_sal from emp where ename=in_ename;

returnv_annual_sal;

end;

相关文档
最新文档