Oracle练习题(九)

2023-10-30

Oracle练习题(九)

(1) 创建一个存储过程,以员工号为参数,输出该员工的工资

--创建存储过程

create or replace procedure print_sal(n number) as

  val_sal emp.sal%type;

begin 

  select emp.sal into val_sal from emp where empno = n;

  dbms_output.put_line(n||'号员工的工资为:'||val_sal);

end;

--执行

exec print_sal(7499);

在这里插入图片描述

(2) 创建一个存储过程,以员工号为参数,修改该员工的工资。若该员工属于10号部门,则工资增加150;若属于20号部门,则工资增加200;若属于30号部门,则工资增加250;若属于其他部门,则增加300。

--创建存储过程

create or replace procedure pro_update_sal(n number) as

  val_deptno emp.deptno%type;

begin  

  select deptno into val_deptno from emp where empno=n;

  case val_deptno

    when 10 then 

      update emp set sal=sal+150 where empno = n;

    when 20 then 

      update emp set sal=sal+200 where empno = n;

    when 30 then 

      update emp set sal=sal+250 where empno = n;

    else

      update emp set sal=sal+300 where empno = n;

  end case;

end;

--执行

 exec pro_update_sal(7499);

在这里插入图片描述

(3) 创建一个程,以员工号为参数,返回该员工的工作年限(以参数形式返回)。

--创建存储过程

create or replace procedure pro_return_year(n number,yeartime out varchar2) as

begin

  select to_char(sysdate,'YYYY')-to_char(emp.hiredate,'YYYY') into yeartime from emp where empno = n;

end;

--声明变量,接受工作年限的值

var a varchar2;

--执行

exec pro_return_year(7499,:a);

在这里插入图片描述

(4) 使用无参游标cursor,查询所有员工的姓名和工资

--创建游标。1创建游标2打开游标3存取游标4关闭游标

create or replace procedure pro_select_name_and_sal as

 cursor cur_emp is select ename,sal from emp;

 val_name emp.ename%type;

 val_sal emp.sal%type;

begin 

  open cur_emp;

  fetch cur_emp into val_name,val_sal;

  while cur_emp%found loop

    dbms_output.put_line('姓名:'||val_name||'工资:'||val_sal);

    fetch cur_emp into val_name,val_sal;

  end loop;

  close cur_emp;

end;

--执行

exec pro_select_name_and_sal;

在这里插入图片描述

(5) 创建语句级触发器,当对emp表进行delete操作后,显示"world hello"

--创建触发器

create or replace trigger tri_delete after delete on emp 

begin

  dbms_output.put_line('world hello');

end; 



--删除时触发

delete from emp where deptno = 10; 

在这里插入图片描述

(6) 周一到周五,且9-17点能向数据库插入数据,否则显示异常提示

--创建触发器

create or replace trigger tri_check before insert or delete or update on emp

begin

  if to_char(sysdate,'d') in ('1','7') then

    raise_application_error(-20000,'不能在非工作日更改员工信息,上班时间为周一到周五9-17点');

  elsif to_char(sysdate,'hh24:mi:ss') not  between '9:00:00' and '17:00:00' then

    raise_application_error(-20000,'不能在非上班时间更改员工信息,上班时间为周一到周五9-17点');

  end if;

end;



--删除时触发

delete from emp where deptno = 10; 

在这里插入图片描述

(7) 创建行级触发器,涨后工资这一列,确保大于涨前工资

--创建行级触发器

create or replace trigger tri_test before update on emp for each row 

begin 

  if :old.sal>:new.sal then 

    raise_application_error(-20001,'更新失败,涨后工资小于涨前工资!');

  end if;

end;


--触发

update emp set sal = sal-100 where empno = 7499;

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle练习题(九) 的相关文章

  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • Oracle:如何确定“AFTER ALTER”触发器中对象的新名称?

    假设我有一个AFTER ALTER在我的 Oracle 数据库上触发并重命名一些数据库对象 ALTER RENAME TO 在触发器中 我如何确定new数据库对象的名称 看来ORA DICT OBJ OWNER ORA DICT OBJ N
  • Oracle查询结果分页无TABLE FULL SCAN数据访问方式

    stackoverflow 上有很多关于如何正确执行分页的问题 对于 Oracle 来说 最流行的答案是这样的 select from select row rownum rownum from select from some table
  • 单独的逗号分隔值并存储在sql server的表中

    我有一个存储过程 它将逗号分隔的值作为输入 我需要将其分开并需要将其作为单独的行存储在表中 令 SP 的输入为 Rule ID ListType ID Values 1 2 319 400 521 8465 2013 我需要将它存储在一个名
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • 对 PLSQL 中的每个表执行

    我想要所有表中匹配特定名称条件的记录数 这是我构建的 SQL Declare SQLStatement VARCHAR 8000 BEGIN SELECT SELECT COUNT FROM Table Name INTO SQLState
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • Delphi 5 中的 Oracle 数据库连接

    我正在使用 Delphi 5 版本 我想连接到 Oracle 数据库 我有 TDatabase 组件 我不知道如何通过 Delphi 连接到数据库 请提供连接数据库的步骤 谢谢 The TDatabase http docwiki emba
  • 如何跨多个表强制执行 CHECK 约束

    我有一个在 Microsoft SQL Server 2012 Express 中记录奶牛繁殖信息的数据库 显然 一头牛只有在出生后才能配种 并且在其一生中可能会配种多次 我需要在我的数据库中强制执行这些约束 我目前已经根据下图安排了一个架
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在标准化数据库模式中是否可以有多个外键?

    Address addressID houseNumber postcode roadName city county Reservation reservationID roomNo leadGuestID guest2ID guest3
  • Oracle 语法 - 我们是否必须在新旧语法之间进行选择?

    我在一个由大约 8 名开发人员组成的团队中负责大约 1 000 000 行源代码的代码库 我们的代码基本上是一个使用 Oracle 数据库的应用程序 但代码随着时间的推移而不断发展 我们有大量九十年代中期的源代码 团队中就我们用于查询 Or
  • 使用Python将文本文件导入Access 2003数据库

    我正在尝试使用我正在开发的 Python 3 4 应用程序将管道分隔的文本文件导入到具有现有表的 Access 数据库中 但遇到了一些麻烦 该应用程序将用于导入不同的文本文件 因此我使用条目小部件来写入文件名 并且我希望将输入的文件的内容加
  • .NET 的 BLOB 分布式存储?

    我正在寻找一个经过相当好的测试的库 服务器来存储持久的分布式哈希表 我对使用基于 SQL 的解决方案犹豫不决 因为数据是高度面向文档的 由数百万个约 64KB 的 blob 组成 只有一个索引 由所述 BLOB 的哈希计算 并且需要能够进行
  • 在 PL/SQL 中将绑定变量与动态 SELECT INTO 子句结合使用

    我有一个关于 PL SQL 中的动态 SQL 语句中可以使用绑定变量的问题 例如 我知道这是有效的 CREATE OR REPLACE FUNCTION get num of employees p loc VARCHAR2 p job V
  • 如何查找当前数据库类型

    我们有一个 SQL 脚本可以在多种类型的数据库上执行 是否可以获取正在执行 SQL 脚本的当前数据库的类型 注意 我们不能使用非标准 SQL 即 TSQL 等 不 ANSI SQL 中没有任何关于确定数据库供应商的内容
  • 同时使用 GUID 和自动递增整数

    我一直在研究使用 GUID 作为数据库中的主键 到目前为止 利似乎大于弊 然而 我发现 GUID 可能不是我想要的 在我的应用程序中 用户应该能够根据用户友好的 ID 来识别对象 因此 例如 如果他们想要获取特定产品而不输入全名 则可以使用
  • MySql 5.7 ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

    我试图在不禁用 my ini 中的 only full group by 的情况下弄清楚 这是我的查询 SELECT p title COUNT t qty AS total FROM payments t LEFT JOIN produc
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一

随机推荐

  • js 删除对象里的某个属性

    删除属性有很多方法 学到了就在这里记录一下 有一个对象 a 有2个属性 b 1 c 2 删除b 保留 c 1 使用delete let a b 1 c 2 delete a b true console log a c 2 2 使用解构 l
  • windows C++ 获取CPU ID

    网上找到了相关代码 但是其中用了嵌入式汇编 只能在win32位下编译运行 根据其他网络资料进行了修改 可以在x64下编译运行 原版资料见链接 链接 link 修改后的代码为 include stdafx h include GetCPUId
  • 【转载】数据库操作系统——Visual FoxPro 6.0安装步骤

    转载地址 https blog csdn net panrenlong article details 82289978 utm medium distribute pc relevant none task blog BlogCommen
  • 如何在DAYU200上安装浏览器-基于OpenHarmony 3.1 Release版本

    1 前言 终于 OpenHarmony有自己的浏览器应用了 可以查看视频演示 先看下效果 打开某宝 可以扫码登录 2 安装教程 2 1 DAYU200升级最新的 3 1Release版本固件 升级教程 https www bilibili
  • Dva系列:connect与@connect的使用(一)

    前言 在刚开始使用Dva的时候 写好models 通过connect进行仓库与组件的链接的时候怎么不是很理解 翻译官方文档也没有明确的解释 提示 以下是本篇文章正文内容 下面案例可供参考 一 connect的用来干什么 connect用来链
  • (微服务多模块)Springboot+Security+Redis+JWT 仅需一招

    小编在开发阶段发现 在现在众多文章中的教程里 虽然有许许多多的Springboot Security Redis JWT 但是那些教程基本的运行环境都在单个项目单个模块中进行开发和测试的 这使得小编在实际的开发过程中 不能Ctrl C an
  • ionic工程报错->Current working directory is not a Cordova-based project的解决

    构建ionic工程出错 奇怪了哎 代码没有动啊 于是重新拉取一份代码 构建发现可以的 于是用比较工具查看 原来是误删了工程目录下的www文件夹导致不能识别 把它恢复就好啦
  • windows下安装gmp库+Dev c++

    需要的三个安装文件 1 Dev c 安装文件 链接 https pan baidu com s 18us8SEEh82zzMvtAeJDedA pwd 1zgo 提取码 1zgo 2 gmp库文件 链接 https pan baidu co
  • 通配符的匹配很全面, 但无法找到元素 'aop:aspectj-autoproxy' 的声明

    因为项目需要 想使用spring的注解方法的AOP切面编程 在xml配置文件中加入
  • 图片自动填充单元格_教你两个word技巧,快速填充文本,插入表格不变形

    许多人说 Word没有什么用 只是一个打字工具 因此长期以来 Word是最被忽视的办公软件之一 觉得自己没必要学习这个软件 从而放弃了学习 但事实却并非如此 在Word看似 简单 的外表下 隐藏着海量的功能和技巧 但很多人其实只会了Word
  • SJTU括号栈配对(OJ599)

    题目源自SJTU OJ 1599 模拟一个括号栈 其元素是三种括号 给出长为n的操作序列 按序列要求完成以下几种操作 push pop 栈空则忽略此操作 输出栈顶元素 栈空则忽略此操作 询问当前括号是否匹配 栈空则认为匹配 Input Fo
  • python爬虫利器:user agent switcher

    一 推荐理由 方便 相比于在浏览器中右键检查 再将浏览器设置成手机端 如下图 user agent switcher给我们带来更多的是方便 一次设置好 就不怕每次麻烦的右键检查 设置成手机端的重复性操作了 这对于python爬虫算是一个比较
  • Keil uVision5开发环境搭建(MDK 5)

    1 下载并安装 MDK作为STM32常用的IDE 其他还有IAR等等 在学习STM32F103的过程中 我之所以选择MDK 是因为KEIL5可以完美兼容KEIL4 与之前的版本相比 最大的区别在于器件 Software Packs 与编译器
  • VS2017+cmake+DCMTK编译安装

    转载自嗯哇创作https blog csdn net chaoenhu article details 78200274 Visual Studio 2015 cmake编译安装MD版的DCMTK 一 编译环境 本文的编译机器是Window
  • 判断字符串类型以及对比

  • R语言数据处理:tidyr包学习

    文章目录 前言 1 gather 函数 2 spread 函数 3 unite 函数 4 separate 函数 5 缺失值处理 总结 前言 在R语言中 tidyr包的应用 tidyr主要提供了一个类似Excel中数据透视表 pivotta
  • git远程连接全流程

    查看文件状态 git status 把文件提交到暂存区 git add 提交文件 命令形式 git commit m 注释内容 连接到远程仓库 这里的origin是远端名称 一般默认都是origin 后面的地址是仓库路径 git remot
  • office2022最新版本Microsoft 365

    office2022正式版是微软即将发布的全新的office版本 office2022正式版将于 2021 年下半年发布 适用于 Windows 和 macOS 系统 按照惯例 微软每隔三年发布一次新版 Office 所以在2021年下半年
  • KEIL调试正在运行的程序

    问题现象 有时程序跑着跑着就飞了 但此时却没有接仿真器 不能停下来看运行状态 如果重新启动调试 会破坏现场 有没有办法attach到应用程序上调试呢 答案是肯定的 解决措施 在调试选项中 取消以下选择项 Options For Target
  • Oracle练习题(九)

    Oracle练习题 九 1 创建一个存储过程 以员工号为参数 输出该员工的工资 创建存储过程 create or replace procedure print sal n number as val sal emp sal type be