当前位置:首页 > 实验3PLSQL编程
.
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
.
.
第二步创建一个触发器给id列赋值 create trigger tr_user_id before insert on user for each row begin
select seq_user_id.nextval into :new.id from dual; end;
.
.
主要算法:
1.
DECLARE
v_empno emp.empno%TYPE:=7788; v_sal emp.sal%TYPE; v_add emp.sal%TYPE; BEGIN
SELECT sal INTO v_sal FROM emp WHERE empno=v_empno; IF v_sal<3000 THEN v_add:=3000; ELSE
dbms_output.put_line('sal>3000'); END IF;
UPDATE emp SET sal=v_add WHERE empno=v_empno; END; /
2. declare type v_record is record ( name emp.ename%type, salary emp.sal%type, job emp.job%type, deptno emp.deptno%type ); empinfo v_record;--定义变量 begin select ename,sal,job,deptno into empinfo from emp where empno = 7788; dbms_output.put_line('雇员'||empinfo.name||'的职务是:'||empinfo.job||'工资是:'||empinfo.salary||'部门号是:'||empinfo.deptno); end; / 3.
declare
cursor c_emp is select * from scott.emp for update;
.
共分享92篇相关文档