Oracle PL/SQL编程(1)

来源:互联网 发布:淘宝客服话术范文 编辑:程序博客网 时间:2024/05/22 02:17


所用示例:

Employee

1编写一个过程,要求传入雇员名字和该雇员新的薪水,修改该雇员的薪水

2编写一个函数要求传入雇员的名字,得到该雇员的年薪

*******************************************************************************

Declare(可选)

/*定义部分*/

Begin 

/*执行的代码*/

Exception(可选)

/*异常处理过程*/

End;

/

 

declare v_empname varchar2(64):='wang222';--对变量赋值时符号为:=v_newsalary number(8,2):=3659.2;begin   update employee set salary=v_newsalary where empname=v_empname;end;/declare v_empname varchar2(64):='wang222';v_sumSalary number;begin  select salary*13 into v_sumSalary from employee where empname=v_empname;  dbms_output.put_line('雇员的年薪为:'||v_sumSalary);/*要使这句话打在控制台上要 set serveroutput on;*/end;/


*******************************************************************************

存储过程

将块升级为一个存储过程

Create procedure 存储过程的名称(变量1  变量类型,变量2  变量类型)is

 

create procedure update_salary(in_v_empname in varchar2,in_v_newSalary in number) is/*变量类型不可以带长度约束,varchar2(64)这样是错误的写法*//*in表示输入的变量,out表示输出的变量  默认为in */begin   update employee set salary=in_v_newSalary where empname=in_v_empname;end;/

*******************************************************************************

函数

Create function 函数名称(变量1 变量类型,变量2  变量类型)return变量类型 is

/*定义的变量*/

Begin

/*执行过程*/

Return 变量;

End

/

 

create or replace function get_sum_salary(in_v_empname varchar2) return number isv_sum_salary number;beginselect salary*13 into v_sum_salary from employee where empname=in_v_empname;return v_sum_salary;end;/

 

*******************************************************************************

首先要申明一个包

Create package 包名is

Procedure 存储过程名称(变量1  变量类型,变量2  变量类型);

Function  函数名称(变量1  变量类型,变量2  变量类型)return变量类型;

End;

/

 

create or replace package mypackage isprocedure update_salary (in_v_empname varchar2,in_v_newSalary number);function get_sum_salary(in_v_empname varchar2) return number;end;/

然后开始创建包体

Create package body 包名is

Procedure存储过程名称(变量1  变量类型,变量2  变量类型)is

/*定义的变量*/

Begin 

/*执行的过程*/

End

Function函数名称(变量1  变量类型,变量2  变量类型)return变量类型 is

/*定义的变量*/

Begin

/*执行过程*/

Return 变量;

End

/

 

create  package body mypackage isprocedure update_salary(in_v_empname in varchar2,in_v_newSalary in number) isbegin   update employee set salary=in_v_newSalary where empname=in_v_empname;end;function get_sum_salary(in_v_empname varchar2) return number isv_sum_salary number;beginselect salary*13 into v_sum_salary from employee where empname=in_v_empname;return v_sum_salary;end;end;/

 

在调用包中的过程或者函数时要带上方案名和包名

完整的调用方法:

Exec 方案名.包名.过程名(变量1,变量2);

Call 方案名.包名.函数名(变量1,变量2);

例如:

Call scott.mypackage.get_sum_salary(‘wang222’);

 

 

0 0
原创粉丝点击