暂无图片
数据库 着急
我来答
分享
刘锦舟
2019-11-10
数据库 着急

运用sql语句创建一张数据表doctor(医生表),字段如下:id(医生编号)、name(姓名)、sal(工资)。在doctor表的id字段设立主键;sal字段保留小数点后2位。运用序列向doctor表中插入10条记录。
要求:编写一个存储过程,输入医生编号和选项(1个字符串参数),当用户输入的选项值为1时给医生涨工资。如果其工资低于3000则增长25%;如果大于等于3000工资则增长15;如果大于等于5000则增长5%。在给医生涨工资时,运用触发器技术实现将医生的原工资和增长后的工资插入到数据表salary(薪资表)中,salary表中字段如下:id(编号)、oldsal(原来工资)、newsal(增长后工资)。在salary表的id字段设立主键;oldsal和newsal保留小数点后2位。当输入参数2=2时,删除员工的信息。

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
章芋文

你好,可以简单说下哪一步你不会,或者有疑问的?

具体是建表语句,还是存储过程

暂无图片 评论
暂无图片 有用 0
打赏 0
刘锦舟

简单来说,我会建表并插入语句,之后涨工资不懂,上课时没有听明白,就是存储过程这方面的问题,您能演示一下吗

暂无图片 评论
暂无图片 有用 0
打赏 0
章芋文

简单手写了下,没建表。可能要调试

--存储需要调用,不能直接接收输入,采用匿名代码块方式 set serveroutput on; ACCEPT OID NUMBER PROMPT '请输入医生ID : '; ACCEPT OP varchar(20) PROMPT '请输入操作 : '; DECLARE v_oid number := &v_oid; v_op varchar := &v_op; v_sal doctor.sal%type; BEGIN IF( v_op = 1 ) THEN SELECT sal INTO v_sal FROM doctor WHERE id = v_oid; if (v_sal < 3000) then update doctor set sal = sal*1.25 where id = v_oid; else if (v_sal >= 3000 && v_sal < 5000) then update doctor set sal = sal*1.15 where id = v_oid; else if (v_sal >= 5000) then update doctor set sal = sal*1.05 where id = v_oid; dbms_output.put_line('a is less than 20 ' ); end if; ELSE IF ( v_op = 2 ) THEN delete from doctor where id = v_oid; END IF; END; / --触发器记录日志 create or replace trigger tri_log_doctor_sal after update of sal on doctor for each row begin insert into log_doctor_sal (id,oldsal,newsal) values (:old.id,:old.sal,:new.sal); end;
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
查询当前schema名、库名
回答 5
在命令行窗口,可以执行如下命令查看当前用户showuser
12C里ORDDATA用户是做什么的了
回答 4
这个是oracle默认创建的用户,包含OracleMultimediaDICOM数据模型,通常这些用户都是locked的。从你的报错看,你应该是全库导出,才会涉及到把默认用户的数据也被导出,从导入的报
Oracle:有个存储过程执行很慢,能想到的就是把存储过程里面涉及到的sql分段分析,有其他好的方法吗?
回答 4
已采纳
第一步你得找出你的存储过程慢在哪里,可能你一个存储过程有1000行,其中就一条SQL执行慢,耗时80%,你得把这条sql找出来,Oracle有个dbmsprofiler包,服务器端可能需要配置一下,然
请问:Oracle的缓存融合有大量的跨节点热块和跨节点运算有什么比较好的优化方案吗?
回答 4
从业务方面优化会更好哦,比如一个业务建一个service这个可以只有一个节点然后另外一个备用!
Startup force到底是不是安全关闭
回答 4
已采纳
startupforce:做shutdownabort启动的时候需要做实例恢复,起不来要看具体问题,多数是数据文件坏了吧
oracle19c的服务端已经安装了,但是plsql连接不行,没有对应的oci.dll,oci.dll在哪里下载啊?
回答 2
已采纳
需要安装oracle客户端,一般在$ORACLEHOME/bin下
Oracle导数
回答 2
已采纳
可以参考这个文章。http://www.itpub.net/thread208496411.html
Oracle赋予用户权限 查看执行 内置函数,例如 right(),如何操作?
回答 1
只要有connect权限就能执行内置函数,但是&nbsp;oracle没有right/left函数,可以用substr自己写类似right/left的函数&nbsp;SQL&gt;selectsubs
Oracle启动后无法工作或者数据库无法启动
回答 2
已采纳
一旦数据库出现无法启动的情况,首先需要检查system表是否为未损坏状态,通常情况而言,如果system表未被损坏那么很容易进行数据恢复,如果system表已经被损坏,那么就需要数据恢复工作人员手动对
系统重装,数据库文件还在,如何安装Oracle能直接恢复原来的数据库?
回答 2
前提是数据文件、控制文件和归档都还在。