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练习题(九) 的相关文章

  • 部署 dacpac 所需的权限

    我正在尝试使用 sqlpackage exe 在租户上部署 dacpac 目前 我正在向将部署此功能的帐户授予 SysAdmin 或 db owner 权限 并且它工作正常 但在生产中 如果目标租户数据库属于其他应用程序 我可能无法获得这些
  • Android 预填充数据库 [重复]

    这个问题在这里已经有答案了 我正在开发一个 Android 应用程序 需要在该应用程序的数据库中填充多个条目 一个表 包含 1000 10000 行 然后用户才能使用该应用程序 我浏览了一些教程 但不确定执行此操作的最佳方法 我是否应该在每
  • Netezza SQL 将 VARCHAR 转换为二进制字符串

    我有一个位图存储为VARCHAR在内特扎 需要转换一下VARCHAR转换为 Netezza 中的二进制字符串 输入 Netezza col 值 VARCHAR 0xFFFFFFFFFFFFFFFF 期望的输出 VARCHAR gt 1111
  • MySQL:为什么 IN 子句中的第 5 个 ID 会极大地改变查询计划?

    给出以下两个查询 Query 1 SELECT log id FROM log WHERE user id IN 188858 188886 189854 203623 204072 and type in 14 15 17 ORDER B
  • MySql 复合索引

    我们使用 MySql 作为我们的数据库 以下查询在 mysql 表 大约 2500 万条记录 上运行 我在这里粘贴了两个查询 查询运行得太慢 我想知道更好的复合索引是否可以改善这种情况 你知道最好的综合指数是什么吗 并建议我这些查询是否需要
  • 当您执行“SELECT *”时,SQL Server 如何确定列的顺序?

    当您执行以下操作时 SQL Server 如何确定列的顺序SELECT 我知道 订购依据 对于订购至关重要data 但我预计列名保持一致 注意 我的代码是not取决于返回列的实际顺序 我只想知道 SQL Server 如何决定对列名进行排序
  • 有什么方法可以在MySQL中的表名位置使用变量吗?

    我想在表名称位置使用变量 例如 SELECT FROM targetTableName 然而它会出错 有什么方法可以在MySQL中的表名位置使用变量吗 您显示的查询不起作用有两个原因 插入到查询中的用户定义变量将被视为使用字符串文字 而不是
  • MySQL 行级锁

    我不确定行级锁是如何工作的 但这是我的问题 我有一个表 T id int balance int engine InnoDB 我想锁定 ID 1 的行 所以我开始一个像这样的事务 start transaction select from
  • 用于高效大规模图遍历的数据库

    我有一个大型二分有向图数据集 约 2000 万个元素 在当前的使用中 我运行的遍历算法每次运行约 500 000 个节点 这些算法有效 但历史上运行的是从文本文件加载到内存的数据 文本文件似乎是一个不好的方法 所以我将数据作为邻接列表传输到
  • QGIS 和 PostGIS(地图点(美国地图上的纬度和经度以及半径)

    我安装了QGIS和PostGIS 我想在美国地图上以 100 英里为半径显示 200 个点 我已将纬度和经度导入 PostGIS 数据库中 所以我有三个字段 地址 纬度 经度 1 我需要将纬度和经度字段转换为点或几何字段吗 如果是这样怎么办
  • T-SQL 问题:查询 XML

    任何人都可以告诉我如何从这些数据生成 DATA Key ParentKey 5 NULL 25 5 33 25 26 5 27 5 34 27 28 5 29 5 这个 XML 结果 RESULTS
  • 使用输出在合并语句中设置变量

    我有一个合并语句应该始终更新或插入一条记录 我想记住变量中该语句的 ID 它看起来像这样 DECLARE int int MERGE dbo table AS A USING SELECT stringtomatch AS string A
  • sql连接一个表中的两个字段

    我有一个预订表 其中有两个人 我想将 person 1 作为一行返回 将 person 2 作为新行返回 但该人的 id 与人员表相关 这是我所得到的 但没有提取预订信息 SELECT people FROM select booking
  • 用户离开时如何正确插入时间( user_left 和 user_joined 具有相同的值)

    在这段代码中 我想获取用户加入和离开的时间并将其存储到数据库中 如果我在 连接 表和 左 表中获得相同的值 会发生什么情况 如何修复它以便它存储不同的值 Schema create user info function Blueprint
  • Oracle 更新/插入卡住、DB CPU 为 100%、并发度高、来自客户端的 SQL*Net 等待消息

    我们有一个 JavaEE 应用程序在 Weblogic 上针对 Oracle 11g DB 运行 使用瘦 JDBC 驱动程序 最近 我们在生产中发生了一系列事件 其中某个表的更新和插入被卡住或花费的时间比正常情况长得多 而且没有明显的原因
  • 在 IEnumerable 中查找相同的集合

    有一项任务要弄清楚如何更新表 DataTable 连接到一个database没有UPDATE陈述 我想出的例子是从邮箱中读取警报 该表将写入 Alerts 如果邮件正文包含单词 SUCCESS gt Alert 变为绿色 如果 FAIL g
  • SQL Server 为什么索引不与 OR 一起使用

    我一直在研究索引并试图了解它们是如何工作的以及如何使用它们来提高性能 但我错过了一些东西 我有下表 Person Id Name Email Phone 1 John E1 P1 2 Max E2 P2 我正在尝试找到对列进行索引的最佳方法
  • JDBC元数据检索约束信息

    我需要来自约束名称的有关表和列名称的信息 是否存在类似于connection getMetadata getX的人来检索约束信息 我的测试用例在Oracle数据库中 但我最好的解决方案只是想用jdbc来解决 如果您正在谈论外键和主键约束 这
  • 有没有适用于 Eclipse 的 SQL 格式化插件?

    我在网上没有找到任何标准的开源 sql 格式化程序 eclipse 插件 我正在使用日食太阳神 我可以找到编辑 gt 格式化SQL但这似乎不起作用 找到一个在http ventralnet blogspot in 2010 11 sql b
  • 使用 System.out.println 显示特殊字符

    我在将带有特殊字符的文本从网络服务发送或显示到数据库时遇到问题 在我的 Eclipse 上 我已将字符编码设置为 UTF 8 但它仍然不允许我显示字符 例如 像下面的代码一样简单的打印 String test System out prin

随机推荐

  • 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