oracle PLSQL 程序设计

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PL/SQL 程序设计

一、实验目的

1.掌握PL/SQL的编写方法;

2.掌握PL/SQL的基本语法、控制结构、游标、异常处理和存储

子程序。

二、实验内容和要求

1、教程第363页,实训题第1到8小题(写出所有命令);

三、实验步骤

(1)

DECLARE

CURSOR c_emp IS select * from emp;

BEGIN

FOR v_emp IN c_emp LOOP

DBMS_OUTPUT.PUT_LINE(v_emp.ename||' '||v_emp.empno||'

'||v_emp.deptno||' '||v_emp.sal);

END LOOP;

END;

(2)

DECLARE

v_emp emp%ROWTYPE;

BEGIN

SELECT * INTO v_emp FROM EMP WHERE ename='SMITH';

DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.sal||'

'||v_emp.deptno);

EXCEPTION

WHEN NO_DATA_FOUND THEN

INSERT INTO EMP(EMPNO,ENAME,SAL,DEPTNO)

VALUES(2007,'SMITH',1500,10);

WHEN TOO_MANY_ROWS THEN

FOR v IN (SELECT * FROM EMP WHERE ENAME='SMITH') LOOP DBMS_OUTPUT.PUT_LINE(v.empno||' '||v.sal||' '||v.deptno); END LOOP;

END;

(3)

CREATE OR REPLACE PROCEDURE SHOWSAL(p_empno

scott.emp.empno%type)

AS

v_sal emp.sal%TYPE;

BEGIN

SELECT sal INTO v_sal FROM scott.emp WHERE empno=p_empno; DBMS_OUTPUT.PUT_LINE(v_sal);

END;

begin

showsal(7844);

end;

(4)

CREATE OR REPLACE PROCEDURE UPDATESAL (p_empno emp.empno%TYPE) AS

v_deptno emp.deptno%TYPE;

v_inc emp.sal%TYPE;

BEGIN

SELECT deptno INTO v_deptno FROM emp WHERE empno=p_empno; CASE v_deptno

WHEN 10 THEN v_inc:=150;

WHEN 20 THEN v_inc:=200;

WHEN 30 THEN v_inc:=250;

ELSE v_inc:=300;

END CASE;

UPDATE emp SET sal=sal+v_inc WHERE empno=p_empno;

END;

(5)

CREATE OR REPLACE FUNCTION fun_sal(p_empno emp.empno%type) RETURN emp.sal%TYPE

AS

v_sal emp.sal%TYPE;

BEGIN

SELECT sal INTO v_sal FROM EMP WHERE empno=p_empno;

RETURN v_sal;

END;

(6)

CREATE OR REPLACE FUNCTION fun_avgsal(p_deptno

emp.deptno%type)

RETURN emp.sal%type

AS

v_sal emp.sal%type;

BEGIN

SELECT AVG(SAL) INTO V_SAL FROM EMP WHERE DEPTNO=P_DEPTNO; RETURN V_SAL;

END;

(7)

CREATE OR REPLACE FUNCTION fun_avg_sal(p_empno

emp.empno%type)

RETURN emp.sal%type

AS

v_sal emp.sal%type;

BEGIN

SELECT AVG(SAL) INTO V_SAL FROM EMP WHERE DEPTNO=(select deptno from emp where

empno=p_empno);

RETURN V_SAL;

END;

(8)

CREATE OR REPLACE PACKAGE PKG_EMP

AS

FUNCTION func_highsal(p_deptno emp.deptno%type) RETURN emp.sal%type;

PROCEDURE proc_highsal(p_deptno emp.deptno%type);

END;

CREATE OR REPLACE PACKAGE BODY PKG_EMP

AS

FUNCTION func_highsal(p_deptno emp.deptno%type)

RETURN emp.sal%type

AS

v_highsal emp.sal%type;

BEGIN

select max(sal) into v_highsal from emp where deptno=p_deptno; return v_highsal;

END;

PROCEDURE proc_highsal(p_deptno emp.deptno%type)

AS

相关文档
最新文档