SQL-server上机练习题-何.pdfVIP

  • 0
  • 0
  • 约4.15千字
  • 约 5页
  • 2026-02-09 发布于河南
  • 举报

含触发器、存储过程、游标

一、触发器练习

1==========

示例说明inserted,deleted表的作用。

程序清单如下:

createtablesc

(snochar(10),

cnochar(2),

scorereal)

Go

CREATETRIGGERtr1

ONsc

FORINSERT,UPDATE,DELETE

AS

PRINTinserted‘表:’

Select*frominserted

PRINTdeleted‘表:’

Select*fromdeleted

Go

2========

创建一个触发器,在s表上创建一个插入、更新类型的触发器。

程序清单如下:

CREATETRIGGERtr_s

ONs

FORINSERT,UPDATE

AS

Begin

DECLARE@bhvarchar(6)

SELECT@bh=inserted.snoFROMinserted/*获取插入或更新操作时的新值(学号)*/

End

3===============

使用INSERT触发器

INSERT触发器通常被用来更新时间标记字段,或者验证被触发器监控的字段中数据满足

要求的标准,以确保数据的完整性。

例9-3建立一个触发器,当向sc表中添加数据时,如果添加的数据与s表中的数据不匹配

(没有对应的学号),则将此数据删除。

程序清单如下:

CREATETRIGGERsc_insONsc

FORINSERT

AS

BEGIN

DECLARE@bhchar(5)

Select@bh=Inserted.snofromInserted

Ifnotexists(selectsnofromswheres.sno=@bh)

Deletescwheresno=@bh

END

二、存储过程练习

1=========

创建一个带有SELECT语句的简单过程,该存储过程返回所有员工姓名,Email地址,电话

等。该存储过程不使用任何参数

程序清单如下。

USEadventureworks

GO

CREATEPROCEDUREau_infor_all

AS

SELECTlastname,firstname,emailaddress,phone

FROMperson.contact

GO

EXECUTE(EXEC)au_infor_all

2==========

创建一个存储过程,以简化对sc表的数据添加工作,使得在执行该存储过程时,其参数值

作为数据添加到表中。

程序清单如下:

CREATEPROCEDURE[dbo].[pr1_sc_ins]

@Param1char(10),@Param2char(2),@Param3real

AS

BEGIN

insertintosc(sno,cno,score)values(@Param1,@Param2,@Param3)

END

EXECpr1_sc_ins‘3130040101’,’c1’,85

当然,在执行过程中变量可以显式命名:

EXECsc_ins@Param1=’3130040101’,@Param2=’c1’,@Param3=85

3==========

以下示例显示有一个输入参数和一个输出参数的存储过程。存储过程中的第一个参数

@sname将接收由调用程序指定的输入值(学生姓名),第二个参数@sscore(成绩)将用于将

该值返回调用程序。SELECT语句使用@sname参数获取正确的@sscore值,并将该值分配

给输出参数。

程序清单如下:

CREATEPROCEDUREs_score

@snamechar(8),@sscorerealoutput

AS

SELECT@sscore=scorefromscjoinsons.sno=sc.sno

wheresn=@sname

GO

4=========

CREATEPROCEDUREp2

@snonchar(8)=NULL,@averagenumeric(6,2)OUTPUT

AS

SELECT@average=SUM(G)

FROMsc

WHEREsno=@sno

DECLARE

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档