oracle存储过程的创建与调用(实验8.3)

2024-03-28 12:32

本文主要是介绍oracle存储过程的创建与调用(实验8.3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 alter user scott identified by a12345 account unlock;grant connect ,resource to scott;

1.创建存储过程,根据职工编号删除Scott.emp表中的相关记录。

(1)以Scott用户连接数据库,然后为system用户授予delete权限。conn scott/a12345;grant delete on emp to system;(2)以system 用户连接数据库,创建存储过程。
connect system/a12345;create or replace procedure delete_emp(id scott.emp.empno%type)is begin delete from scott.emp where empno=id;exception when others then dbms_output.put_line('errors');end;
/
(3)system 用户调用delete_emp存储过程。execute delete_emp(7369);
(4)scott 用户调用delete_emp存储过程。
grant execute on delete_emp to scott;
connect scott/a12345;
execute system.delete_emp(7369);
2.创建存储过程,根据职工编号修改scott.emp表中该职工的其他信息。

(1)   创建新用户,并授予权限。
connect system/a12345;create user u1 identified by abcdef;grant create session,create procedure to u1;grant select,update on scott.emp to u1;
(2)   以新用户连接数据库,创建存储过程。
connect u1/abcdef; CREATE OR REPLACE PROCEDURE update_emp(no IN scott.emp.empno%TYPE,--引用emp表中的某字段的数据类型,必须对该表具有select权限name IN scott.emp.ename%TYPE DEFAULT NULL,job1 IN scott.emp.job%TYPE DEFAULT NULL,mgr1 IN scott.emp.mgr%TYPE DEFAULT NULL,hiredate1 scott.emp.hiredate%TYPE DEFAULT NULL,salary scott.emp.sal%TYPE DEFAULT NULL,comm1 scott.emp.comm%TYPE DEFAULT NULL,deptno1 scott.emp.deptno%TYPE DEFAULT NULL)ISBEGINif name is not null thenupdate scott.emp set ename=name where empno=no;end if;if job1 is not null thenupdate scott.emp set job=job1 where empno=no;end if;if mgr1 is not null thenupdate scott.emp set mgr=mgr1 where empno=no;end if;if hiredate1 is not null thenupdate scott.emp set hiredate=hiredate1 where empno=no;end if;if salary is not null thenupdate scott.emp set sal=salary where empno=no;end if;if comm1 is not null thenupdate scott.emp set comm=comm1 where empno=no;end if;if deptno1 is not null thenupdate scott.emp set deptno=deptno1 where empno=no;end if;EXCEPTIONWHEN others THENrollback;END;/
(3)   u1调用update_emp 过程。exec update_emp(7369,salary=>2000);
3.创建存储过程,根据指定的职工编号查询该职工的详细信息。

(1)创建存储过程。
connect scott/a12345;create or replace procedure select_emp(no in scott.emp.empno%type,emp_information out varchar2)
is
r scott.emp%ROWTYPE;
begin select * into r from scott.emp where empno=no;emp_information:=emp_information||r.ename||'  '||r.job||'  '||r.sal||'   '||r.mgr||
'   '||r.hiredate||'   '||r.comm||'   '||r.deptno;
exceptionwhen no_data_found thenemp_information:='No person!';when others then emp_information:='Error!';
End;
/ (2)调用存储过程
set serveroutput ondeclare info varchar2(50);begin select_emp(7369,info);dbms_output.put_line(info);end;/
4.创建函数,根据给定的部门编号计算该部门所有职工的平均工资。
(1)创建函数。
create or replace function avg_sal(no scott.emp.deptno%type)return numberisavgsal number(7,2);beginselect avg(sal) into  avgsal from scott.emp where deptno=no;if  avgsal is not null then --因为上面的语句不触发异常,因此用if语句判断是否查询成功return  avgsal;elseavgsal:=-1;return  avgsal;end if;end   avg_sal;/
(2)调用函数。
begin dbms_output.put_line(avg_sal(&deptno));end;




这篇关于oracle存储过程的创建与调用(实验8.3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/855620

相关文章

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到