实验3PLSQL编程(2)

2018-11-27 20:12

7.

1 CREATE OR REPLACE PROCEDURE EMP_LIST 2 AS

3 CURSOR emp_cursor IS

4 SELECT empno,ename FROM scott.emp; 5 BEGIN

6 FOR Emp_record IN emp_cursor LOOP

7 DBMS_OUTPUT.PUT_LINE(Emp_record.empno||Emp_record.ename); 8 END LOOP; 9 EMP_COUNT; 10* END; SQL> /

过程已创建。

8.

SQL> CREATE OR REPLACE PROCEDURE select_emp 2 (v_emp_no IN emp.empno%type) 3 IS

4 v_emp_name emp.ename%type; 5 v_dept_name dept.dname%type; 6 BEGIN

7 SELECT EMP.ENAME,DEPT.DNAME 8 INTO v_emp_name, v_dept_name 9 FROM EMP,DEPT

10 WHERE EMP.DEPTNO=DEPT.DEPTNO AND EMPNO = v_emp_no; 11 DBMS_OUTPUT.PUT_LINE(v_emp_name||' '||v_dept_name); 12 END select_emp; 13 /

过程已创建。

SQL> EXECUTE select_emp(7844); TURNER SALES

PL/SQL 过程已成功完成。

SQL> CREATE OR REPLACE TRIGGER update_dept_to_emp 2 AFTER UPDATE ON DEPT FOR EACH ROW 3 BEGIN

4 IF UPDATING THEN

5 UPDATE EMP SET DEPTNO = :new.DEPTNO 6 WHERE DEPTNO=:old.DEPTNO; 7 END IF;

8 END update_dept_to_emp; 9 /

触发器已创建

9.

CREATE OR REPLACE TRIGGER tr_reg_dep AFTER update OF deptno ON dept

FOR EACH ROW BEGIN

DBMS_OUTPUT.PUT_LINE('旧的deptno值是'||:old.deptno ||'、新的deptno值是'||:new.deptno); UPDATE emp SET deptno = :new.deptno WHERE deptno = :old.deptno; END;

10.

select object_name,status from user_objects where object_type='FUNCTION'; select object_name,status from user_objects where object_type='PROCEDURE'; SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='TRIGGER';

drop procedure select_emp; DROP FUNCTION GET_AVG_PAY; DROP TRIGGER TR_REG_DEP;

五、拓展题

--创建一个包mypackage,声明该包有一个过程update_sal和一个函数get_YearSal create or replace package myPackage is procedure update_sal(name varchar2,newsal number); function get_YearSal(name varchar2) return number; end;

create or replace package body myPackage is procedure update_sal(name varchar2,newsal number) is begin

update emp set sal=newSal where ename=name; end;

function get_YearSal(name varchar2) return number is v_sal number(7,2); begin

select sal*12+nvl(comm,0) into v_sal from emp where ename=name; return v_sal; end; end; 调用执行包中的存储过程或函数

我们现在有这样一张用户表表结构如下,希望向表中增加数据时,表中id列的数字自动生成。第一步创建序列,要求开始的数字为1,每次递增1,按顺序产生序列值;第二步创建一个触发器,向用户表中插入数据的时候触发触发器,在触发器内部调用序列并生成一个序列值赋值给表的id列。

表结构如下:

UserInfo(id ,username,userPass)

--用户表(用户编号number类型,用户名,用户密码) create sequence seq_user_id start with 1 --从1开始

increment by 1;--每次增量为1


实验3PLSQL编程(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017年苏教版四年级数学上册第七单元测试卷及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: