实验6 触发器与作业..

实验6  触发器与作业..
实验6  触发器与作业..

实验6触发器与作业

姓名:学号:

专业:网络工程班级:

同组人:无实验日期:2013/11/28

【实验目的与要求】

?理解什么是触发器

?掌握触发器的设计与使用

?掌握在Oracle中完成定时作务的方法

【实验内容与步骤】

相关说明:本实验中前面实验创建的触发器可能对后面的实验产生干扰,若出现这种情况,请把前面触发器删除,再完成后面实验。建议每完成一个实验题后,即将该题相关的触发器删除,以免对后面实验产生干扰。

6.0触发器创建与删除语法

1.触发器的创建

触发器是一种在发生数据库事件时自动运行的PL/SQL

语法如下:

CREATE [OR REPLACE] TIGGER触发器名触发时间触发事件

ON表名

[FOR EACH ROW]

BEGIN

pl/sql语句

END

2.触发器的删除

DROP TRIGGER trigger_name

6.1触发器基础

以下程序展示的是触发器的基本使用方法,请阅读并理解以下程序代码,给出运行结果。

1.创建测试表

--drop table employees;

create table employees(

id number(5),

name varchar2(30),

salary number(8,2),

job_id varchar2(20)

);

2.创建触发器

CREATE OR REPLACE TRIGGER secure_emp_1 --这里不能有IS

BEFORE INSERT ON employees -- 这里没有分号

BEGIN

IF (TO_CHAR (SYSDA TE,'DY') IN ('星期六','星期天') OR

(TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '18:00' )) THEN RAISE_APPLICATION_ERROR(-20500,'你只能在工作时间对表进行操作');

END IF;

END;

/

3.测试触发器

(1)--测试语句

insert into employees values (1,'a',2222,'aaaaa');

给出测试结果截图:

(2)将系统时间修改为周六,再Insert一条记录,给出并比较两次运行的结果。

给出测试结果截图:

6.2使用触发器监控数据更新操作

阅读以下程序,理解程序功能,给出运行测试结果。

1.创建触发器

CREATE OR REPLACE TRIGGER secure_emp_2

BEFORE INSERT OR UPDATE OR DELETE ON employees

BEGIN

--如果当前时间是周六或周日或者时间不在8:00-18:00之间

IF (TO_CHAR (SYSDA TE,'DY') IN ('星期五','星期天') OR

(TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '18:00' ))

THEN

IF DELETING THEN

RAISE_APPLICATION_ERROR (-20502,'你只能在工作时间删除员工表的数据');

ELSIF INSERTING THEN

RAISE_APPLICATION_ERROR (-20500,'你只能在工作时间插入员工表的数据.');

ELSIF UPDA TING ('SALARY') THEN

RAISE_APPLICATION_ERROR (-20503,'你只能在工作时间更新员工表的数据');

ELSE

RAISE_APPLICATION_ERROR (-20504,'你只能在工作事件操作员工表的数据.');

END IF;

END IF;

END;

/

2.运行测试

分别运行以下测试语句,给出运行结果。并理解为什么会有这样的结果。

insert into employees values (1,'a',2222,'AD_PRES');

insert into employees values (2,'b',2222,'AD_VP');

给出测试结果截图:

delete from employees;

给出测试结果截图:

update employees set salary=3000;

给出测试结果截图:

6.3在insert或update中使用:new

阅读并理解以下程序,理解其功能,给出运行测试结果。

1.创建触发器

--在insert或update中使用:new--

CREATE OR REPLACE TRIGGER restrict_salary

BEFORE INSERT OR UPDATE OF salary ON employees

FOR EACH ROW

BEGIN

-- 插入和修改可以使用:new来访问新的数据,修改也可以使用:old来访问旧的数据IF NOT (:NEW.job_id IN ('AD_PRES', 'AD_VP'))

AND :NEW.salary > 15000

THEN

RAISE_APPLICATION_ERROR (-20202,'员工不能赚到这么多薪水');

END IF;

END;

2.运行测试

--测试语句

insert into employees values (1,'a',20000,'AD_PRES');

insert into employees values (2,'b',20000,'AD_VPs');

update employees set salary=30000 ,job_id='xxxx' where name='a';

给出运行结果:

思考:观察运行结果,比较insert和update语句执行的差别。

6.4在delete中使用:old

阅读并理解以下程序,理解其功能,给出运行测试结果。

1.创建触发器

CREATE OR REPLACE TRIGGER restrict_salary_del

BEFORE DELETE ON employees FOR EACH ROW

BEGIN

-- 在delete语句中只能使用:old来访问旧的数据

IF (:OLD.job_id IN ('AD_PRES', 'AD_VP')) AND (:OLD.salary > 15000)

THEN

RAISE_APPLICATION_ERROR (-20202,'该员工不可以删除');

END IF;

END;

2.运行测试

--测试语句

insert into employees values (2,'张三',20000,'AD_PRES');

delete from employees where name='张三';

给出运行结果:

6.5INSTEAD OF类型的触发器

阅读并理解以下程序,理解其功能,给出运行测试结果。

1.准备工作:创建触发器及相应测试用表

--INSTEAD OF类型的触发器

drop table departments;

create table departments(

dept_id number(5) primary key,

dept_name varchar2(20)

);

drop table employees;

create table employees(

employee_id number(5),

employee_name varchar2(20),

department_id number(5),

constraint empl_dept_fk foreign key (department_id) references departments(dept_id) );

--创建视图

create or replace view v_emp

as

select e.employee_id,e.employee_name,e.department_id,d.dept_name

from employees e,departments d

where e.department_id = d.dept_id

--创建触发器

create or replace trigger new_view_emp_dept

instead of insert on v_empl for each row

begin

if inserting then

insert into departments

values(:new.department_id,:new.dept_name);

insert into employees

values(:new.employee_id,:new.employee_name,:new.department_id);

end if;

end;

2.运行测试

(1)查询视图:select * from v_emp;

给出运行结果:

(2)插入测试数据

--向视图中插入数据

insert into v_emp values (171,'张六',1000,'销售部');

(3)结果测试

select * from employees;

给出运行结果:

select * from departments;

给出运行结果:

6.6系统级触发器

阅读并理解以下程序,理解其功能,给出运行测试结果。

1.创建触发器

------------系统触发器---------------------------------------

--创建登陆或者退出数据库日志表

drop table logs;

create table logs(

userid varchar2(20),

times date,

op varchar2(10)

);

----登陆数据库触发器

create or replace trigger log_on

after logon on schema

begin

insert into logs values(user,sysdate,'logon');

end;

/

--退出数据库触发器

create or replace trigger log_off

before logoff on schema

begin

insert into logs values(user,sysdate,'logoff');

end;

/

2.运行测试

(1)--以不同的用户身份登录和退出数据库数次,以获得相关数据

如:conn sys/testdb as sysdba;

Conn soctt/tiger

(2)-- A设置日期的显示格式

alter session set nls_date_format='YYYY-MM-DD HH_MI_SS';

(3)-- 查看记录

select * from logs;

给出运行结果:

6.7作业与定时任务

6.7.1作业概述

作业是Oracle中一个程序包,可用于Oracle中实现定时任务。日常开发最常用到的用于完成定时任务的是Job中包中的submit函数,其接口如下:

1.dbms_job.submit( job out binary_integer,

2.what in archar2,

3.next_date in date,

4.interval in varchar2,

5.no_parse in boolean)

其中:

●job:输出变量,是此任务在任务队列中的编号;

●what:执行的任务的名称及其输入参数;

●next_date:任务执行的时间;

●interval:任务执行的时间间隔。

其中Interval这个值是决定Job何时,被重新执行的关键;当interval设置为null 时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。

以下实验中创建一个名称为tri_test_id的触发器,用于实现当在作业中定时调用存储过程,向Test表插入数据时,自动的触发序列号的产生,并添加数据到Test表中。

更新员工工资之后,将更新纪录保存到表salary_change_record中。

6.7.2实验准备

--(1)创建测试表:

CREATE TABLE Test(id number,cur_user varchar2(20),cur_time varchar2(30));

--(2)创建序列test_sequence:

CREATE SEQUENCE test_sequence

INCREMENT BY 1 --每次加几个

START WITH 1 --从1开始计数

NOMAXV ALUE --不设置最大值

NOCYCLE --一直累加,不循环

CACHE 10;

--建触发器tri_test_id:

CREATE OR REPLACE TRIGGER tri_test_id

before INSERT

ON test --test 是表名

FOR each row

DECLARE

nextid number;

BEGIN

IF :new.id IS NULL or :new.id=0 THEN --id是列名

SELECT test_sequence.nextval -- test_sequence正是刚才创建的序列

INTO nextid

FROM sys.dual;

:new.id:=nextid;

END IF;

END tri_test_id;

/

--创建一个自定义过程

CREATE OR REPLACE PROCEDURE proc_test

AS

BEGIN

INSERT INTO test(cur_user,cur_time)

V ALUES(user,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')); --系统时间转为格式串END;

/

6.7.3作业的创建与使用

--创建JOB

DECLARE jobNo number;

BEGIN

dbms_job.submit(

jobNo, --job参数

'proc_test;', --what参数是将被执行的PL/SQL代码块

sysdate, --next_date,参数指识何时将运行这个工作,本例为马上开始

'sysdate+1/(24*60*10)'--interval参数,即1/10分钟运行test过程一次

); --no_parse参数,无

END;

--next_date,可如:to_date('20110517093500','yyyy-mm-dd hh24:mi:ss'),

6.7.4测试

--测试:1分钟后查看Test表中数据

SELECT *

FROM test

请给出运行结果:

6.7.5停止与移除作业

若要移除、停止或启用作业,需根据作业号,调用作业包中存储过程dbms_job.remove(jobNo)来完成。其中,作业号可通过数据字典all_jobs获取。

1.获取作业号

可通过查询数据字典all_jobs来获取作业号,示例如下:

其中,job字段值即为作业号。

2.移除作业

--删除JOB

begin

dbms_job.remove(jobNo);--jobNo为作业号,使用时应用查询得到的结果end;

/

3.停止一个JOB

exec dbms_job.broken(jobNo,true) --jobNo为作业号,使用时应用查询得到的结果

4.停止一个JOB

exec dbms_job.broken(jobNo,false) --jobNo为作业号,使用时应用查询得到的结果

6.8实验练习

1.实验练习:利用触发器追踪薪水变动情况

请创建一个名称为change_record的触发器,实现当对emp表更新员工工资之后,将更新纪录保存到表salary_change_record中。

具体要求如下:

建立日志对薪水的变动情况形成一个追踪,也就是说,如果对某个职员的薪水进行变更就应该将其相应的变更记录全部记下来,将数据记录到表salary_change_record (empid,old_salary,new_salary,change_date)中,其中old_salary:用来纪录员工原来的工资,new_salary:用来纪录更新后的工资,change_date:记录更新的系统时间。

请给出相应的代码:

create table salary_change_record

(

empid number(4),

old_salary number(7,2),

new_salary number(7,2),

change_date date

);

create or replace trigger change_record

after update on emp for each row

begin

if updating then

insert into salary_change_record

values(:new.empno,:old.sal,:new.sal,sysdate

);

end if ;

end;

/

在emp表中添加或修改几行数据,而后查看表salary_change_record中数据。

请给出测试结果:

2.编写一个数据库触发器,当任何时候某个部门从"dept"表中删除时,该触发器将从"emp"

表中删除该部门的所有雇员记录。

给出相应的代码:

create or replace trigger del_emp_deptno

before delete on dept for each row

begin

delete from emp where deptno=:old.deptno;

end;

/

给出测试结果:

3. 映射emp表中每个部门的总人数和总工资

(1)--创建映射表

CREATE TABLE dept_sal

AS

SELECT deptno,COUNT(empno) AS total_emp,SUM(sal) AS total_sal

FROM emp

GROUP BY deptno;

DESC dept_sal;

(2)--创建触发器,映射emp表中每个部门的总人数和总工资

创建一触发器,当emp表中数据改变时,自动修改dept_sal表中数据,使其反映出Emp表中数据的最新状态。

请给出程序源码:

CREATE OR REPLACE TRIGGER emp_info

AFTER INSERT OR UPDATE OR DELETE ON emp DECLARE CURSOR cur_emp IS

SELECT deptno,COUNT(empno) AS total_emp,SUM(sal) AS total_sal FROM emp

GROUP BY deptno;

BEGIN DELETE dept_sal;

FOR v_emp IN cur_emp LOOP

DBMS_OUTPUT.PUT_LINE(v_emp.deptno || v_emp.total_emp

|| v_emp.total_sal);

INSERT INTO dept_sal V ALUES(v_emp.deptno,v_emp.total_emp,

v_emp.total_sal);

END LOOP;

END;

/

select * from dept_sal;

INSERT INTO emp(empno,deptno,sal) V ALUES('123','20',10000);

SELECT * FROM dept_sal;

DELETE EMP WHERE empno=123;

SELECT * FROM dept_sal;

(3)测试

按下面步骤完成测试,结出测试结果,并比对测试结果,看是否满足要求。

A.查询dept_sal中数据:

SELECT * FROM dept_sal;

给出结果:

B.--对emp表进行DML操作

INSERT INTO emp(empno,deptno,sal) V ALUES('123','10',10000);

SELECT * FROM dept_sal;

给出测试结果:

DELETE EMP WHERE empno=123;

SELECT * FROM dept_sal;

给出测试结果:

4. 监控用户对表的更新操作。

已知employees_copy表中一个非常重要的表,当用户其中的数据作修改更新等操作时,需记录操作用户、时间和所做的操作(即是INSERT/UPDATE/DELETE中的哪一个触发了触发器)于日志表中employees_log中,请按以下过程完成指定业务。

(1) 建立试验表

create table employees_copy

as

select *from hr.employees

(2) 建立日志表

create table employees_log(

who varchar2(30),

when date,

op_type V ARCHAR2(15));

(3) 在employees_copy表上建立语句触发器,当对该表进行insert或update或delete操作时,将用户名称、操作时间和操作类型记录到表employees_log 中。

请给出源程序:

create or replace trigger emptrigger

before insert or update or delete on employees_copy for each row

declare

operation employees_log.op_type%type;

begin

if inserting then

operation := 'insert';

elsif updating then

operation := 'update';

elsif deleting then

operation := 'delete';

end if;

insert into employees_log

values(user,sysdate,operation);

end;

(4) 测试:请添加几条数据到employees_copy表中,并试着删除、修改基中的几条记录,

完成后查询employees_log表中数据。

请给出测试结果:

5.定时任务练习:

假设公司要求DBA每隔5分钟(实际运作时,一般为一个月统计一次,实验中为了测试,将时间变短为5分钟)根据emp表统计一次公司员工工资总和,并记录到表Total_salary _Table(count_time,total_salry)中(表中count_time表示统计时间;total_salry表示当前员工工资总和,可由sum(sal)运算得到)。

请根据以上任务需求写出完成该功能的程序代码,并给出测试实例结果。

(1)请给出源程序:

(2)测试:

执行作业任务后,对emp表的sal字段进行更新(如修改其数据,添加或删除数据行),约5分钟后,对表Total_salary _Table执行查询,并给出查询结果。

Select *

From Total_salary _Table;

请给出运行结果:

实验六 触发器实验报告

实验五 触发器实验报告 [实验目的] 1. 理解Oracle 触发器的种类和用途 2. 掌握行级触发器的编写 [预备知识] 1. PL/SQL 程序设计 [实验原理] 1. 建立触发器 CREA TE [OR REPLACE] TRIGGER <触发器名> BEFORE|AFTER INSERT|DELETE|UPDA TE OF <列名> ON <表名> [FOR EACH ROW] WHEN (<条件>) ON 子句中的名称识别与数据库触发器关联的数据库表 触发器事件指定了影响表的 SQL DML 语句 ( INSERT 、 DELETE 或 UPDA TE) AFTER 指定了触发器在处理完成后触发 BEFORE 指定了触发器在处理完成前触发 默认情况下,触发器每个表触发一次 FOR EACH ROW 选项指定触发器每行触发一次(即触发器为行级触发器) 要使触发器触发,WHEN 子句中布尔型表达式的值必须判定为 TRUE 可以将 REPLACE 添加到 CREA TE 语句以自动删除和重建触发器 2. 行级触发器中引用表数据 在行级触发器中,使用伪记录来表示旧数据:old 和新数据:new 引用示例::new.customer_name, :old.customer_name 3. 行级触发器中的谓词 在一个多条件触发的触发器中,使用谓词可以区分当前触发的操作的类型:触发事件 :old :new Insert 无定义,所有字段都是NULL 该语句完成后插入的值 Update 更新前该行的旧值 更新后该行的值 Delete 删除前该行的值 无定义,所有字段

数据库实验报告(7)-触发器

桂林航天工业学院学生实验报告 实验七 实验名称触发器实验日期2019.11.12 实验目的 1.了解触发器的基本原理,掌握创建触发器的方法。 2.掌握修改和删除触发器的方法,能够设计简单的触发器。 实验内容触发器 实验方法及步骤 1、创建一个触发器InsStud,当向student表插入一条记录时,同时把该记录插入到关系student2。 CREATE TRIGGER InsStud on student FOR INSERT AS insert into student2 select*from inserted 2、向student表中插入一条记录('201215130','张三','男',20,'CS'),查看student和student2表中记录的变化是什么? student和student2表中都能插入('201215130','张三','男',20,'CS')这条记录 insert student values('201215130','张三','男',20,'CS'); select*from student select*from student2 3、创建一个触发器DelStud,当向student表删除一条记录时,同时把该记录从student2表删除掉。

CREATE TRIGGER DelStud on student FOR delete AS delete student2 select*from deleted 4、删除student表中的sno为201215130的元组,同时查看student2表中元组的变化是什么? student和student2表中都能删除('201215130','张三','男',20,'CS')这条记录。 delete student where sno='201215130' select*from student select*from student2 5、为course表创建一个名为del_rollback_tr的DELETE触发器,该触发器的作用是禁止删除course表中的记录。 CREATE TRIGGER del_rollback_tr on course FOR delete AS if (exists(select*from deleted)) rollback insert course values('8','张','5',2); delete course where cno='8'

实验16用三表法测量电路等效参数

实验十六 用三表法测量电路等效参数 一、实验目的 1. 学会用交流电压表、 交流电流表和功率表测量元件的交流等效参数的方法。 2. 学会功率表的接法和使用。 二、原理说明 1. 正弦交流信号激励下的元件值或阻抗值,可以用交流电压表、 交流电流表及功率表分别测量出元件两端的电压U 、流过该元件的电流I 和它所消耗的功率P ,然后通过计算得到所求的各值,这种方法称为三表法, 是用以测量50Hz 交流电路参数的基本方法。 计算的基本公式为: 阻抗的模I U Z =, 电路的功率因数 cos φ= UI P 等效电阻 R = 2 I P =│Z │cos φ, 等效电抗 X =│Z │sin φ 或 X =X L =2πfL , X =Xc =fC π21 2. 阻抗性质的判别方法:在被测元件两端并联电容或串联电容的方法来加以判别,方法与原理如下: (1) 在被测元件两端并联一只适当容量的试验电容, 若串接在电路中电流表的读数增大,则被测阻抗为容性,电流减小则为感性。 图16-1 并联电容测量法 图16-1(a)中,Z 为待测定的元件,C'为试验电容器。(b)图是(a)的等效电路,图中G 、B 为待测阻抗Z 的电导和电纳,B'为并联电容C' 的电纳。在端电压有效值不变的条件下,按下面两种情况进行分析: ① 设B +B'=B",若B'增大,B"也增大,则电路中电流I 将单调地上升,故可判断B 为容性元件。 ② 设B +B'=B",若B'增大,而B"先减小而后再增大,电流I 也是先减小后上升,如图16-2所示,则可判断B 为感性元件。 由上分析可见,当B 为容性元件时, 对并联电容C'值无特殊要求;而当B 为感 性元件时,B'<│2B │才有判定为感性的意 I I Z , . . (a ) (b )

实验六 触发器

一、实验目的 1)理解触发器的用途、类型和工作原理 2)掌握利用T-SQL语句创建和维护触发器的方法 3)掌握利用企业管理器创建、维护触发器的方法 二、实验内容 说明:在所有触发器取名时,请各位同学在所给定的名称后加上下划线及学号后四位数字构成自己的实验触发器名。如:deltr_20051101.各触发器中的所用到的参数变量名自取。 1、利用企业管理器创建与维护触发器 (1)创建简单触发器 创建一个触发器stu_modify在修改student表后,显示一个提示信息,告诉用户有多少行数据被修改了。 创建步骤: create trigger stu_modify on student after insert,delete,update as print'(所影响的行数为:'+cast(@@rowcount as varchar(10))+'行'; 触发器的触发执行测试语句(T-SQL): update Student_20083386 set sex='男' where sno='20050001' 执行结果:

(2)修改触发器 修改stu_modify触发器,使其为一个加密触发器。(提示:加with encpytion关键子句)修改步骤: USE[XSGL_20083386] GO /****** Object: Trigger [dbo].[stu_modify] Script Date: 05/17/2010 19:59:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER trigger[dbo].[stu_modify] on[dbo].[Student_20083386] with Encryption after insert,delete,update as print'(所影响的行数为:'+cast(@@rowcount as varchar(10))+'行)' (3)删除触发器 删除stu_modify触发器。 删除步骤:

实验六 两级放大电路

实验六两级放大电路 一、实验目的 1.掌握如何合理设置静态工作点。 2.了解放大器的失真及消除方法。 二、实验仪器 1.双踪示波器。2.万用表。3.模拟电路实验装置。4.毫伏表 三、预习要求 1.预习教材多级放大电路内容。 2.分析图6.1两级交流放大电路。初步估计测试内容的变化范围。 四、实验内容 1.设置静态工作点 (1)按图接线,注意接线尽可能短。 (2)静态工作点设置:要求第二级在输出波形不失真的前提下幅值尽管大,第一级为增加信噪比工作点尽可能低一些。 建议:I CQ1 =1mA,I CQ2=1。2mA。 (3)在输入端加上1KHz幅度为1mV的交流信号(一般采用实验箱上加衰减的办法,即信号源用一个较大的信号。例如100mV,在实验板上经100:1衰减电阻降为1mV)。调整工作点使输出信号不失真。 注意:如发现有寄生振荡,可采用以下措施消除: ①重新布线,尽可能走线短。 ②可在三级管eb间加几p到几百p的电容。 ③信号源与放大器用屏蔽线连接。 2.按表6.1要求测量并计算,注意测静态工作点时应断开输入信号。

表6.1 L 4.测两级放大器的频率特性(EWB) (1)将放大器负载断开,先将输入信号频率调到1KHZ,幅度调到使输出幅度适当而不失真。 (2)保持输入信号幅度不变,改变频率,按表6.2测量并记录。 (3)接上负载,重复上述实验。 五、实验报告: 1.整理实验数据,分析实验结果。 2.画出实验电路的频率特性简图,标出f H和f L。 3.写出增加频率范围的方法。 六、思考题: 1.总结示波器在实验中的作用。 2. 两级放大器静态工作点调节的方法和理论根据。

实验六 触发器实验报告

实验六触发器实验报告 触发器实验报告 [实验目的]1、理解Oracle触发器的种类和用途2、掌握行级触发器的编写 [预备知识]1、 PL/SQL程序设计 [实验原理]1、建立触发器 CREATE [OR REPLACE] TRIGGER <触发器名> BEFORE|AFTER INSERT|DELETE|UPDATE OF <列名> ON <表名> [FOR EACH ROW] WHEN (<条件>) ON 子句中的名称识别与数据库触发器关联的数据库表触发器事件指定了影响表的 SQL DML 语句 ( INSERT、 DELETE 或 UPDATE) AFTER 指定了触发器在处理完成后触发 BEFORE 指定了触发器在处理完成前触发默认情况下,触发器每个表触发一次 FOR EACH ROW 选项指定触发器每行触发一次(即触发器为行级触发器)要使触发器触发,WHEN 子句中布尔型表达式的值必须判定为 TRUE 可以将 REPLACE 添加到 CREATE 语句以自动删除和重建触发器2、行级触发器中引用表数据在行级触发器中,使用伪记录来表示旧数据:old和新数据:new 触发事件 :old :new Insert 无定义,所有字段都是NULL该语句完成后插入的值 Update 更新前该行的旧值更新后该行的值 Delete 删除前该行的值无定

义,所有字段都是NULL引用示例::new、 customer_name, :old、customer_name3、行级触发器中的谓词在一个多条件触发的触发器中,使用谓词可以区分当前触发的操作的类型:inserting,updating,deleting。 示例: IF Inserting THEN 语句 ; END IF; IF Updating THEN 语句 ; END IF; IF Deleting THEN 语句 ; END IF;4、触发器的限制 SELECT 语句必须是 SELECT INTO 语句或内部游标声明。 行级触发器不可以对触发表进行查询,包括其调用的子过程中。 不允许 DDL 声明和事务控制语句。 如果由触发器调用存储子过程,则存储子程序不能包括事务控制语句。 :old 和 :new 值的类型不能是 LONG 和 LONG RAW。 [实验内容]1、给Customer表增加一列Savings,类型为int,来存放每个顾客的存款总额。A LTER TABLE customer ADD (saving varchar2(30));select * from customer;2、更新Customer表,使得Savings字段的值正确。 3、在Account表上增加一个行级触发器,当对account的balance进行update和insert一个记录时同步修改Customer的Savings字段,保证数据的一致性。

大数据库实验6触发器实验报告材料

淮海工学院计算机工程学院实验报告书 课程名:《数据库原理及应用》 题目:存储过程和触发器 班级:软件132 学号: 2013122907 姓名:孙莹莹 评语: 成绩:指导教师: 批阅时间:年月日

一.目的与要求 1.掌握存储过程的创建方法; 2.掌握存储过程的执行、修改和删除等操作; 3.掌握触发器的创建方法; 4.掌握触发器的使用、修改和删除等相关内容 二.实验内容 基于前面建立的factory数据库,使用T-SQL语句完成如下各小题的功能: 1.创建一个为worker表添加职工记录的存储过程Addworker; 2.创建一个存储过程Delworker删除worker表中指定职工号的记录。 3.显示存储过程Delworker; 4.删除存储过程Addworker和Delworker. 三.实验步骤 1 . (1)建立存储过程 USE factory GO CREATE PROCEDURE Addworker @no int=NULL, @name char(10)=NULL, @sex char(2)=NULL, @birthday datetime=NULL, @na char(2)=NULL, @wtime datetime=NULL, @depno int=NULL AS IF @no IS NULL OR @name IS NULL OR @sex IS NULL OR @birthday IS NULL OR @depno IS NULL BEGIN PRINT '请重新输入该职工信息!' PRINT '你必须提供职工号、姓名、性别、出生日期、部门号' RETURN END BEGIN TRANSACTION INSERT INTO worker VALUES(@no,@name,@sex,@birthday,@na,@wtime,@depno) IF @@error<>0 BEGIN ROLLBACK TRAN RETURN END

触发器实验报告

. . . . .. . 实验报告 课程名称:数字电子技术基础实验 指导老师: 周箭 成绩:__________________ 实验名称:集成触发器应用 实验类型: 同组学生姓名:__邓江毅_____ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 实验内容和原理 1、D →J-K 的转换实验 设计过程:J-K 触发器和D 触发器的次态方程如下: J-K 触发器:n n 1 +n Q Q J =Q K +, D 触发器:Qn+1=D 若将D 触发器转换为J-K 触发器,则有:n n Q Q J =D K +。 实验结果: J K Qn-1 Qn 功能 0 0 0 0 保持 1 1 0 1 0 0 置0 1 0 1 1 0 1 翻转 1 0 1 0 1 置1 1 1 (上:Qn ,下:CP ,J 为高电平时) 2、D 触发器转换为T ’触发器实验 设计过程:D 触发器和T ’触发器的次态方程如下: D 触发器:Q n+1= D , T ’触发器:Q n+1=!Q n 若将D 触发器转换为T ’触发器,则二者的次态方程须相等,因此有:D=!Qn 。 实验截图: 专业:电卓1501 姓名:卢倚平 学号:3150101215 日期:2017.6.01 地点:东三404

实验名称:集成触发器应用实验 姓名: 卢倚平 学号: 2 (上:Qn ,下:!Qn )CP 为1024Hz 的脉冲。 3、J-K →D 的转换实验。 ①设计过程: J-K 触发器:n n 1 +n Q Q J =Q K +, D 触发器:Qn+1=D 若将J-K 触发器转换为D 触发器,则二者的次态方程须相等,因此有:J=D ,K=!D 。 实验截图: (上:Qn ,下:CP ) (上:Qn ,下:D ) 4、J-K →T ′的转换实验。 设计过程: J-K 触发器:n n 1 +n Q Q J =Q K +, T ’触发器:Qn+1=!Qn 若将J-K 触发器转换为T ’触发器,则二者的次态方程须相等,因此有:J=K=1 实验截图:

实验6 数据库实验——存储过程和触发器

实验6 存储过程与触发器 一、实验目的 1、加深与巩固对存储过程与触发器概念的理解。 2、掌握触发器的简单应用。 3、掌握存储过程的简单应用。 二、实验内容 一)存储过程: 1、创建一存储过程,求l+2+3+…+n,并打印结果。 CREATE PROCEDURE addresult AS DECLARE @n int=10,/*最后一个数*/ @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。EXEC addresult

3、修改上述存储过程为addresult1,使得@n为输入参数,其具体值由用户调用此存储过程时指定。 CREATE PROCEDURE addresult1 @n int=10 /*最后一个数*/ AS DECLARE @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 4、调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。 EXEC addresult1 100 5.修改上述存储过程为addresult2,将@n参数设定默认值为10,并改设@sum为输出参数,让主程序能够接收计算结果。

实验五 存储过程和触发器的定义和使用3

实验五存储过程和触发器的定义和使用 一、实验目的 1、掌握局部变量、全局变量、流程控制语句的使用方法 2、了解存储过程的类型和作用,并掌握使用对象资源管理器和Transact-SQL语句创建 存储过程的方法及使用方法。 3、理解触发器的特点和作用,并掌握使用Transact-SQL语言创建触发器的方法 二、实验内容 1.在学生成绩库中中有如下各表: 学生表(Student) 学号姓名性别出生日期专业所在系联系电话020101杨颖01980-7-20计算机应用计算机88297147 020102方露露01981-1-15信息管理计算机88297147 020103俞奇军11980-2-20信息管理计算机88297151 020104胡国强11980-11-7信息管理计算机88297151 020105薛冰11980-7-29水利工程水利系88297152 020201秦盈飞01981-3-10电子商务经济系88297161 020202董含静01980-9-25电子商务经济系88297062 020203陈伟11980-8-7电子商务经济系88297171 020204陈新江11980-7-20房建水利系88297171 create database学生成绩数据库 create table Student ( 学号Char(6)not null, 姓名Char(8)not null, 性别Bit not null, 出生日期smalldatetime, 专业Char(10), 所在系Char(10), 联系电话Char(11)null ) 课程表(Course) 课程号课程名教师开课学期学时学分 101计算机原理陈红2453 102计算方法王颐3453 103操作系统徐格2604 104数据库原理及应用应对刚3755 105网络基础吴江江4453 106高等数学孙中文1906 107英语陈刚1906 108VB程序设计赵红韦3705

实验六 比较器电路

东南大学电工电子实验中心 实验报告 课程名称:电子线路实验 第 6 次实验 实验名称:比较器电路 院(系):专业: 姓名:学号: 实验室: 实验组别: 同组人员:实验时间: 10 年 5 月13日 评定成绩:审阅教师:

实验六比较器电路 一、实验目的 1、熟悉常用的单门限比较器、迟滞比较器、窗口比较器的基本工作原理、电路特性和主要使用场合; 2、掌握利用运算放大器构成单门限比较器、迟滞比较器和窗口比较器电路各元件参数的计算方法,研究参考电压和正反馈对电压比较器的传输特性的影响; 3、了解集成电压比较器LM311的使用方法,及其与由运放构成的比较器的差别; 4、进一步熟悉传输特性曲线的测量方法和技巧。 二、实验原理

三、预习思考 1、用运算放大器LM741设计一个单门限比较器,将正弦波变换成方波,运放采用 双电源供电,电源电压为±12V,要求方波前后沿的上升、下降时间不大于半个周期的1/10,请根据LM741数据手册提供的参数,计算输入正弦波的最高频率可为多少。 答: 左右,计算可得输查询LM74的数据手册,可得转换速率为0.5V/us,电源电压为10V 出方波的最大上升时间为40us,根据设计要求,方波前后沿的上升下降时间不大于半个周期的1/10,计算可得信号的最大周期为800us,即输入正弦波得到最高频率为1.25KHZ. 2、画出迟滞比较器的输入输出波形示意图,并在图上解释怎样才能在示波器上正 确读出上限阈值电平和下限阈值电平。 答: Ch1接输入信号,ch2接输出信号,两通道接地,分别调整将两个通道的零基准线,使其重合。用示波器的游标功能,通道选择ch1,功能选择电压,测出交点位置处电压即对应上限和下限阈值。

实验六 存储过程和触发器

实验六存储过程与触发器 一、目的与要求 1.掌握编写数据库存储过程的方法。 2.掌握建立数据库触发器的方法,通过实验观察触发器的作用与触发条件设置 等相关操作。 二、实验准备 1.了解编写存储过程与调用的T-SQL语法; 2.了解触发器的作用; 3.了解编写触发器的T-SQL语法。 三、实验内容 (一)存储过程 在studentdb数据库中建立存储过程getPractice,查询指定院系(名称)(作为存储过程的输入参数)中参与“实践”课程学习的所有学生学号、姓名、所学课程编号与课程名称,若院系不存在,返回提示信息。 提示:D_Info表中存储了院系代码D_ID,而St_Info表中学号字段St_ID的前两位与之对应,则D_Info表与St_Info表之间的联系通过这两个字段的运算构成连接条件。 1.分别执行存储过程getPractice,查询“法学院”与“材料科学与工程学院” 的学生中参与“实践”课程的所有学生学号、姓名、所学课程编号与课程名称。 create procedure getPractice @D_Name varchar(30) output as begin if not exists (select * from D_Info where D_Name= @D_Name ) print '对不起,该院系不存在' else select st_info、St_ID,C_Info、C_No,C_Name from s_c_info inner join st_info on st_info、St_ID=s_c_info、st_id inner join C_Info on s_c_info、c_no=C_Info、C_No where st_info、St_ID in ( select St_ID from st_info join D_Info on D_Info、D_ID =left(st_info、St_ID,2) where C_Info、C_Type='实践' and D_Info、D_Name= @D_Name ) end go

实验六 存储过程和触发器

实验六存储过程和触发器 电子信息科学与技术罗滨志(120802010051) 一、实验目的 (1)理解存储过程和触发器的功能和特点; (2)学会使用Transact-SQL编写存储过程和触发器的方法; (3)学会如何使用管理平台创建存储过程和触发器; (4)掌握存储过程的创建、执行与删除; (5)掌握触发器的创建、修改和删除操作; (6)理解可以使用存储过程和触发器来维护数据完整性。 二、实验准备 (1)了解存储过程的基本概念和类型。 (2)了解创建存储过程的Transact —SQL语句的基本语法。 (3)了解查看、执行、修改和删除存储过程的基本语法。 (4)了解触发器的基本概念和类型。 (5)了解创建触发器的Transact —SQL语句基本用法。 (6)了解查看、修改和删除触发器的Transact —SQL语句的用法。 三、实验内容和步骤 1.创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。SQL语句 create proc stu_info@sname varchar(20) as select grade from sc,student where student.sno=sc.sno and sname=@sname go 如图所示:

2. 使用studentsdb数据库中的student表,course表、sc表。 (1)创建一个存储过程stu_score,查询学号为2012001的学生的姓名,课程名称,分数。SQL语句 create proc stu_score@sno varchar(20) as select sname,cname,grade from sc,student,course where student.sno=sc.sno and https://www.360docs.net/doc/b33049443.html,o=https://www.360docs.net/doc/b33049443.html,o and student.sno=@sno go 如图所示:

存储过程和触发器(数据库实验5)

数据库基础与实践实验报告实验五存储过程和触发器 班级:惠普测试142 学号:1408090213 姓名:闫伟明 日期:2016-11-14

1 实验目的: 1)掌握SQL进行存储过程创建和调用的方法; 2)掌握SQL进行触发器定义的方法,理解触发器的工作原理; 3)掌握触发器禁用和重新启用的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验内容与步骤 利用实验一创建的sch_id数据库完成下列实验内容。 1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。 存储过程定义代码: CREATE PROCEDURE JSXX_PROC AS SELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND https://www.360docs.net/doc/b33049443.html,o=https://www.360docs.net/doc/b33049443.html,o 存储过程执行语句与执行结果截图: EXECUTE JSXX_PROC 2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、 所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。 存储过程定义代码:

CREATE PROCEDURE XM_PROC @sname VARCHAR(100) AS BEGIN IF EXISTS(SELECT NULL FROM S WHERE sn=@sname) SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE https://www.360docs.net/doc/b33049443.html,o=https://www.360docs.net/doc/b33049443.html,o AND SC.sno=S.sno AND S.sn=@sname ELSE PRINT'无该姓名的同学。' END 运行截图: 3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业), 统计并显示该专业各年龄段男、女生人数。如果没有该专业,则显示“无此专业”。 存储过程定义代码: CREATE PROCEDURE XBNL_PROC @departName VARCHAR(30)='计算机', @begin INT, @end INT AS

实验6:存储过程和触发器

序号: 云南大学软件学院实验报告 课程:数据库原理与实用技术实验学期:2015-2016学年第二学期任课教师: 专业:学号:姓名:成绩: 实验6 存储过程和触发器 存储过程 1、使用不带参数的存储过程 (1)创建一个存储过程my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系 (2)执行存储过程 2、带输入参数的存储过程 (1)创建一个存储过程my_procsex,使其能够查询“学生表”中男学生或女学生(输入参数从这考虑)的学号、姓名、性别、年龄和所在院系 (2)执行存储过程 3、带输入/输出参数的存储过程 (1)创建一个存储过程my_procage,使其能够根据学生姓名(输入),查询学生年龄(输出)。(考虑当学生不存在时给出提示信息) (2)执行存储过程 4、返回状态值的存储过程 (1)创建一个存储过程my_procstatus,使其能够根据学生姓名,查询学生的选课信息。(如果没有输入学生姓名,返回状态码55;如果输入的学生姓名不存在,则返回状态码-155) (2)执行存储过程:接收存储过程返回的状态码,如果返回的状态码为55则输出提示信息“没有输入名字!!”;如果返回的状态码为-155,则输出“没找到!!”。 (3)删除存储过程

触发器 1、使用触发器 (1)创建一个触发器trig_update,返回对“学生表”进行更新操作后,被更新的记录条数(2)执行触发器 (3)修改触发器trig_update,除返回被更新的记录条数外,再返回学生的所有基本信息 2、使用触发器的两个特殊表:插入表(inserted)和删除表(deleted)。 (1)在“学生表”上创建触发器ins_del_sample,在对学生表进行插入、删除或更新操作后,分别从inserted表和deleted表中查询学生学号、姓名、性别、年龄和所在院系。 (请同学们在做删除操作时,注意备份) (2)执行插入、删除和更新操作后返回的表有什么区别? 3、使用系统存储过程查看触发器 (1)显示触发器trig_update的一般信息 (2)显示触发器trig_update的源代码 (3)显示“学生表”上所有的依赖关系 (4)显示触发器trig_update所引用的对象 4、难题(注意inserted表和deleted表的使用,并请自己修改数据表) (1)为“成绩表”创建一个触发器,当向表中插入数据时,如果成绩大于等于60分,该学生就能得到相应的学分,否则,该学生不能得到学分。 (2)为“学生表”创建一个触发器,当删除表中的一个学生资料时,将“成绩表”中的相应记录也删除掉 (3)为“成绩表”创建一个触发器,如果成绩由原来的小于60分更改为大于等于60分时,该学生就得到相应的学分,如果成绩由原来的大于等于60分更改为小于60分,则该学生的相应学分更改为0。

数据库存储器与触发器实验报告(互联网+)

南昌航空大学实验报告 二0一七年 5 月 3 日 课程名称:数据库概论实验名称:存储器与触发器 班级:xxx 姓名:xxx 同组人: 指导教师评定:签名: 一、实验环境 1.Windows2000或以上版本; 2.SQLServer2000或2005。 二、实验目的 1.掌握存储过程的创建,修改,使用,删除; 2.掌握触发器的创建,修改,使用,删除。 三、实验步骤及参考源代码 1.创建过程代码: CREATE PROCEDURE C_P_Proc(@ccna varchar(10),@cno char(4)OUTPUT,@cna varchar(10)OUTPUT,@pna varchar(20)OUTPUT,@num int OUTPUT) AS SELECT @cna=cna,@cno=https://www.360docs.net/doc/b33049443.html,o,@pna=pna,@num=num FROM cp,customer,paper WHERE https://www.360docs.net/doc/b33049443.html,o=https://www.360docs.net/doc/b33049443.html,o AND paper.pno=cp.pno AND cna=@ccna;

6.执行存储过程C_P_Pro,实现对李涛,钱金浩等不同顾客的订阅信息查询execute C_P_Proc@name='李涛' execute C_P_Proc@name='钱金浩' 7,删除存储过程C_P_Prcc DROP PROCEDURE C_P_PROC (4)在DingBao数据库中针对PAPER创建插入触发器TR_PA PER_I、删除触发器TR_PAPER_D、修改触发器TR_PAPER_U。具体要求如下。

<1>对PAPER的插入触发器:插入报纸记录,单价为负值或为空时,设定为10元。 CREATE TRIGGER TR_PAPER_I ON paper FOR INSERT AS DECLARE @ippr FLOAT; declare @ipno int; SELECT @ippr=ppr,@ipno=pno from inserted begin if @ippr<0 or @ippr is NULL begin raiserror('报纸的单价为空或小于零!',16,1) update paper set ppr=10 where paper.pno=@ipno end

电子线路基础数字电路实验6 移位寄存器

实验六移位寄存器 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、实验原理 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图9—1所示。 图9—1 CC40194的逻辑符号及引脚功能 其中D0、D1、D2、D3为并行输入端; Q0、Q1、Q2、Q3为并行输出端;SR为右移串行输入端,SL为左移串行输入端;S1、S0为操作模式控制端;C R为直接 无条件清零端;CP为时钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0~Q3),左移(方向由Q3~Q0),保持及清零。 S1、S0和C R端的控制作用如表9—l。 表9—l

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。(1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位,如图9—2所示,把输出端Q3和右移串行输入端S R相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→……,如表9—2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图9—2电路可以由各个输出端输出在时间上有先后顺序的脉冲。因此也可作为顺序脉冲发生器。 图9—2环形计数器表9—2 如果将输出作与左移串行输入临,相连接,即可达左移循环移位。 (2)实现数据串、并行转换 ①串行/并行转换器 串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。图9—3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位申/并行数据转换电路。 图9—3 七位串行/并行转换器 电路中S0端接高电平1,S1受Q7控制,二片寄存器连接成串行输入右移工作模式。Q7是转换结束标志。当Q7=1时,S1为0,使之成为S1S0=01的串入右移工作方式,当Q7=0时,S1=1, S1S0=10则串行送数结束,标志着串行输入的数据已转换成并行输出了。’ 串行/并行转换的具体过程如下: 转换前,C R端加低电平,使1、2两片寄存器的内容清0,此时S1 S0=11,

实验6 数据库实验——存储过程和触发器

实验6 存储过程和触发器 一、实验目的 1、加深和巩固对存储过程和触发器概念的理解。 2、掌握触发器的简单应用。 3、掌握存储过程的简单应用。 二、实验内容 一)存储过程: 1. 创建一存储过程,求l+2+3+…+n,并打印结果。 CREATE PROCEDURE addresult AS DECLARE @n int=10,/*最后一个数*/ @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+...+n的结果是:' PRINT @result RETURN(@result) END GO 2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。EXEC addresult

3. 修改上述存储过程为addresult1,使得@n为输入参数,其具体值由用户调用此存储过程时指定。 CREATE PROCEDURE addresult1 @n int=10 /*最后一个数*/ AS DECLARE @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+...+n的结果是:' PRINT @result RETURN(@result) END GO 4. 调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。 EXEC addresult1 100 5.修改上述存储过程为addresult2,将@n参数设定默认值为10,并改设@sum为输出参数,让主程序能够接收计算结果。

实验六 存储过程和触发器

实验六存储过程和触发器 一、目的与要求 1.掌握编写数据库存储过程的方法。 2.掌握建立数据库触发器的方法,通过实验观察触发器的作用和触发条件设置 等相关操作。 二、实验准备 1.了解编写存储过程和调用的T-SQL语法; 2.了解触发器的作用; 3.了解编写触发器的T-SQL语法。 三、实验内容 (一)存储过程 在studentdb数据库中建立存储过程getPractice,查询指定院系(名称)(作为存储过程的输入参数)中参与“实践”课程学习的所有学生学号、姓名、所学课程编号和课程名称,若院系不存在,返回提示信息。 提示:D_Info表中存储了院系代码D_ID,而St_Info表中学号字段St_ID的前两位与之对应,则D_Info表与St_Info表之间的联系通过这两个字段的运算构成连接条件。 1.分别执行存储过程getPractice,查询“法学院”和“材料科学与工程学院” 的学生中参与“实践”课程的所有学生学号、姓名、所学课程编号和课程 名称。 create procedure getPractice @d_name varchar(30) as select st_info.st_id,st_info.st_name,s_c_info.c_no,c_info.c_name from st_info,d_info,s_c_info,c_info where d_info.d_name=@d_name and st_info.st_id=s_c_info.st_id and d_info.d_id=left(st_info.st_id,2) and s_c_info.c_no=c_info.c_no and c_info.c_type='实践' Go exec getPractice '法学院' exec getPractice '材料科学与工程学院'

电路实验实验报告

电路实验实验报告 一、实验题目 二极管伏安特性曲线测量 二、实验摘要 1.设计电路使电压1-5v可调。 2.在面包板上搭接一个测量二极管伏安特性曲线的电路。 3.给二极管测试电路的输入端加Vp-p=4V、f=5kHz的正弦波,用示波器观察该电路的输入输出波形。 4.测量二极管正向和反向的伏安特性,将所测的电流和电压列表记录好。 5.用excel画二极管的伏安特性曲线。 三、实验环境 数字万用表、二极管、面包板、导线、电阻、示波器、函数信号发生器等。 四、实验原理 1.晶体二极管的导电特性: 晶体二极管无论加上正向或反向电压,当电压小于一定数值时只能通过很小的电流,只有电压大于一定数值时,才有较大电流出现,相应

的电压可以称为导通电压。正向导通电压小,反向导通电压相差很大。当外加电压大于导通电压时,电流按指数规律迅速增大,此时,欧姆定律对二极管不成立。 2.正向电压: 对二极管施加正向偏置电压时,则二极管中就有正向电流通过(多数载流子导电),随着正向偏置电压的增加,开始时,电流随电压变化很缓慢,而当正向偏置电压增至接近二极管导通电压时,电流急剧增加,二极管导通后,电压的少许变化,电流的变化都很大。 3.反向电压: 对上述器件施加反向偏置电压时,二极管处于截止状态,其反向电压增加至该二极管的击穿电压时,电流猛增,二极管被击穿,在二极管使用中应竭力避免出现击穿观察,这很容易造成二极管的永久性损坏。所以在做二极管反向特性时,应串联接入限流电阻,以防因电流过大而损坏二极管。 4.将正弦交流电接入二极管,正向的电流可以导通,反向无法导通,则可在示波器上显示出半个正弦波。 五、实验电路

实验六 RS触发器和D触发器

第六次试验报告 实验内容: 1、验证RS 触发器的逻辑功能 2、动态方法测试D 触发器 3、用D 触发器做出四分频电路 实验器材和元器件:74LS00、74LS74、自制硬件基础电路实验箱、导线若干、示波器 实验预习: 1、D 锁存器: Q * = D 当CLK = 1时输出端状态随输入端的状态而改变。 当CLK = 0时输出状态保持不变。 2、RS 触发器 G 1和G 2门构成基本RS 触发器。用G 3和G 4两门引入时钟信号CLK 。 1 G 3 G 4 G S C L K R 2 G Q Q ' 电路结构 Q Q ' C L K 1S 1R 1 C 图形符号 Q D CLK Q' 1D C1 D 1 G 3G 4 G C L K 2 G Q Q '

工作原理: CLK=0时:G 3、G 4门均输出1,基本RSFF 处在保持原来状态; CLK=1时:此时电路就是一个基本RSFF ,只需把输入信号S 、R 分别看作:S=S ''、R=R '' 上图中,框内的C1表示CP 是编号为1的一个控制信号。1S 和1R 表示受C1控制的两个输入信号,只有在C1为有效电平时,1S 和1R 信号才能起作用。框外的输入端处没有小圆圈表示CP 以高电平为有效电平。如果在CLK 输入端画有小圆圈,则表示以低电平为有效电平。 特性表、特性方程、波形图: 动作特点: 只有当CLK 变为有效电平时,触发器 才能接受输入信号,并按照输入信号将触发器的输出置成相应的状态。 在CLK=1的全部时间里 S 和R 的变化都将引起触发器输出端状态的变化。 如果CLK=1期间内输入信号多次发生变化, 则触发器的状态也会发生多次翻转, CL K S R Q Q* 0 × × 0 0 0 × × 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1* 1 1 1 1 1* * ='+=SR Q R S Q 置0 置1 不允许 保持

相关文档
最新文档