《数据库应用》上机实验报告3
班级:
学号:
姓名:
实验目的:
通过本次上机,进一步使用oracle的功能做一些实践,学会过程和函数的创建并使用。
实验内容:
实验内容:
在HR用户的例表下,自行设计业务逻辑
分别实现设计过程与函数各一个,要求提交并存储到数据中。
实验结果与分析:
1、设计一个过程,过程的声明语法:
CREATE [OR REPLACE]PROCEDURE 过程名[(参数名参数类型,…)] is
--变量声明部分
[变量名变量类型]
BEGIN
--过程体
[EXCEPTION]
--异常处理
END;
/
注:--后为注释
创建一个过程reg_pro,该过程可以展示出某一id对应的地区名。
过程创建截图如下:
使用reg_pro,展示结果如下:
选择出region_id为2的那个地区名给reg_id。
REGIONS表的数据信息:
2、创建一个函数,函数声明语法:
CREATE [OR REPLACE]FUNCTION 函数名[(参数名参数类型,…)]
RETURN 数据类型 is
--变量声明部分
[变量名变量类型]
BEGIN
--函数体
[EXCEPTION]
--异常处理
END;
/
创建函数j_fun的截图展示如下:
使用该函数。并展示结果:
J_fun将某一个JOB的max_salary+1000,选择出job_id为AD_VP的JOB,并将max_salary的值加上1000后给j_max_salary。
JOBS表的部分数据:
3、异常节:
EXCEPTION
WHEN exception_name
THEN
error handling statements; ……
[WHEN OTHERS
default exception handling;]
异常节是最后一节,是可选的。
异常节用于处理在执行该块的逻辑期间所发生的任何错误。
异常的名称:
PL/SQL中已经定义了许多异常,例如no_data_found。参考《Oracle PL/SQL User’s Guide》
自己定义并启动异常:定义异常时和普通的变量声明是一样的。
execption_name EXCEPTIONS;
RAISE exception_name;
异常相关函数:
异常处理过程中,需要明确知道发生异常的原因。
在WHEN OTHERS语句中,将众多的错误原因放在一起进行处理,需要明确知道错误的类型和原因。
Oracle提供了两个系统变量用以处理此问题:
SQLCODE,返回错误的错误代码;
SQLERRM,返回错误的出错信息;
exception
when others
then
dbms_output.put_line (‘Error’ || SQLERRM || ‘occurred.’);
实验小结:
通过本次上机,对过程和函数的实现有了一定的了解,在解决创建过程和函数的过程中出现的问题时发现了自己的不足。
代码:
SQL> create or replace procedure reg_pro(reg_id number) is
2 reg_name varchar2(25);
3 begin
4 select region_name into reg_name from regions where region_id=reg_id;
5 dbms_output.put_line('地区:'||reg_name);
6 end;
7 /
过程已创建。
SQL> set serveroutput on
SQL> exec reg_pro(2)
地区:Americas
PL/SQL 过程已成功完成。
SQL> create or replace function j_fun(j_id varchar)
2 return number is
3 j_max_salary number(6,0);
4 begin
5 select (max_salary+1000) into j_max_salary from jobs where job_id=j_id;
6 return j_max_salary;
7 end;
8 /
函数已创建。
SQL> select j_fun('AD_VP') fr
J_FUN('AD_VP')
--------------
31000
31000
31000
31000
31000
31000
31000
31000
31000
31000
31000
J_FUN('AD_VP')
--------------
31000
31000
31000
31000
31000
31000
31000
31000
已选择19行。
SQL>