save-controls.sql
上传用户:wwjj4545
上传日期:2022-07-24
资源大小:2k
文件大小:4k
源码类别:

数据库编程

开发平台:

Java

  1. ---1./*创建员工表employee包含字段employee_id类型为number,
  2. 长度为5,employee_name类型为varchar2,长度为20,employee_salary类型为
  3. number,长度为4。*/
  4. drop table emp;
  5. create table emp
  6. (
  7.     eid number(5),
  8.     ename varchar2(20),
  9.     sal number(4)
  10. );
  11. insert into emp values(001,'李静',2000);
  12. insert into emp values(002,'张熊',1980);
  13. insert into emp values(003,'梁惠',4500);
  14. insert into emp values(004,'陈珊',5100);
  15. insert into emp values(005,'乔麦',2500);
  16. insert into emp values(006,'余杰',5400);
  17. insert into emp values(007,'李文',2600);
  18. ----2./*创建部门表department包含字段department_id类型为number,长度为3,
  19. department_name类型为varchar2,长度为20,employee_id 类型为
  20. number,长度为5。*/
  21. --部门表
  22. drop table dept;
  23. create table dept
  24. (
  25.     did number(3),
  26.     dname varchar2(20),
  27.     eid number(5)
  28. );
  29. insert into dept values(178,'SBB',001);
  30. insert into dept values(159,'HDD',002);
  31. insert into dept values(123,'GDS',003);
  32. insert into dept values(111,'PPT',004);
  33. insert into dept values(108,'FTE',005);
  34. insert into dept values(135,'PPT',006);
  35. insert into dept values(136,'SBB',007);
  36. select * from dept;
  37. select * from emp;
  38. ----3./*给employee表添加记录的存储过程*/
  39. create or replace procedure put_column
  40. (insertdate1 in number,
  41. insertdate2 in varchar,
  42. insertdate3 in number)
  43. as
  44. begin
  45.   insert into emp
  46.   values(insertdate1,insertdate2,insertdate3);
  47. end put_column;
  48. call put_column(001,'李静',2000);
  49. call put_column(002,'张熊',1980);
  50. call put_column(003,'梁惠',4500);
  51. call put_column(004,'陈珊',5100);
  52. call put_column(005,'乔麦',2500);
  53. call put_column(006,'余杰',5400);
  54. call put_column(007,'李文',2600);
  55. select * from emp;
  56.   
  57.   
  58.   
  59.   
  60.   
  61. create or replace procedure put_column
  62.   (insertdate1 in number,
  63. insertdate2 in varchar,
  64. insertdate3 in number)
  65.  as
  66. begin
  67.    insert into emp
  68.    values(insertdate1,insertdate2,insertdate3);
  69.     COMMIT;
  70.   END IF;
  71. EXCEPTION
  72.   WHEN OTHERS THEN
  73.     ROLLBACK;
  74. END put_colunm;
  75. ----4./*给department表添加记录的存储过程*/
  76. create or replace procedure put_column
  77. (insertdate1 in number,
  78. insertdate2 in varchar,
  79. insertdate3 in number)
  80. as
  81. begin
  82.   insert into dept
  83.   values(insertdate1,insertdate2,insertdate3);
  84. end put_column;
  85. call put_column(178,'SBB',001);
  86. call put_column(159,'HDD',002);
  87. call put_column(123,'GDS',003);
  88. call put_column(111,'PPT',004);
  89. call put_column(108,'FTE',005);
  90. call put_column(135,'PPT',006);
  91. call put_column(136,'SBB',007);
  92. select * from dept;
  93.   
  94. ----5./*调用相应的存储过程实现记录添加*/
  95. execute insert_emp(009,'李强',5000);
  96. execute insert_detp(110,'SBB'1000);
  97. /*--要求2:给指定部门的员工加薪,这实际上是一个复合查询,首先需要把所有
  98. 该部门的员工塞选出来,然后对这些员工的薪水进行相应的改动
  99. (需要注意的是:将要加薪的部门作为参数,这样的存储过程更有灵活性。)*/
  100. select emp.ename from emp,dept group by emp.ename; 
  101. CREATE or
  102. 7./*--要求3:建立日志对薪水的变动情况形成一个追踪,也就是说,
  103. 如果对某个职员的薪水进行变更就应该将其相应的变更记录全部记下来。
  104. 如果对employee表的salary字段创建一个触发器,来监视对salary的更改,
  105. 把每次更改进行记录,这样就达到了要求3的目的了。*/
  106. drop table sal_adjust_log;
  107. select * from sal_adjust_log;
  108. create table sal_adjust_log
  109. (
  110.     enm_id number(5),
  111.     old_salary number(4),
  112.     new_salary number(4),
  113.     changedate date
  114. );
  115. insert into sal_adjust_log values(001,2300,2000,sysdate);
  116. create or replace trigger update_emp_sal
  117. after update on emp
  118. for each row
  119. begin
  120. insert into sal_adjust_log
  121. values
  122.  (:new.emp_id,
  123.   :old.emp_salary,
  124.   :new_emp_salary,
  125.   sysdate);
  126. end;
  127. select * from jobs;
  128. drop table jobs1;
  129. create table jobs1 as select * from jobs;
  130. select * from jobs1;
  131. savepoint insert_jobs5;
  132. insert into jobs1 values('jj','hu');
  133. savepoint insert_jobs1;
  134. update jobs1 set name = 'hjj';
  135. savepoint insert_jobs2;
  136. insert into jobs1 values('kk','yan');
  137. savepoint insert_jobs3;
  138. update jobs1 set name = 'yankk';
  139. savepoint update_jobs4;
  140. rollback to insert_jobs5;
  141. select * from jobs1;
  142. rollback to insert_jobs1;
  143. select * from jobs1;
  144. rollback to insert_jobs2;
  145. select * from jobs1;
  146. rollback to insert_jobs3;
  147. rollback to update_jobs4;