1 / 5
文档名称:

实验8 存储过程和触发器.pdf

格式:pdf   大小:370KB   页数:5页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验8 存储过程和触发器.pdf

上传人:1781111**** 2024/4/14 文件大小:370 KB

下载得到文件列表

实验8 存储过程和触发器.pdf

相关文档

文档介绍

文档介绍:该【实验8 存储过程和触发器 】是由【1781111****】上传分享,文档一共【5】页,该文档可以免费在线阅读,需要了解更多关于【实验8 存储过程和触发器 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..存储过程和触发器1掌握通过企业管理器和Transact—SQL语句和CREATEPRODCEDURE创建存储过程的方法和步骤。—SQL语句和EXECUTE执行存储过程的方法。—SQL语句CREATETRIGGER创建触发器的方法和步骤。。。,命名事物的创建方法,不同类型的事务的处理情况。二、。—SQL语句的基本语法。、执行、修改和删除存储过程的基本语法。。—SQL语句基本用法。、修改和删除触发器的Transact—SQL语句的用法。,处理事务的方法和过程。。三、,创建一个利用流控制语句的存储过程lletters_print,该存储器能显示26个小写字母。单击查询分析器的“执行查询”按钮,。CREATEPROCEDUREletter_******@******@count=******@count<26BEGINPRINTCHAR(ASCII(a’)+***@count)******@count=***@count+1ENDEXECletter_print:..stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。使用EXECUTE命令执行存储过程stu_info,其参数值为“马东”。如果存储过程stu_info执行时没有提供参数,能按默认值查询(设姓名为“刘卫平”),如何修改该过程的定义?CREATEPROCEDUREstu_******@namevarchar(40),姓名,课程编号,==***@nameGOEXECUTEstu_info'马东'在创建系统存储过程后,插入默认值约束DEFAULT,语法:DEFAULT'刘卫平',curriculm表、grade表。(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名,课程名称,分数。(2)执行存储过程stu_grade,查询0001学生的姓名,课程名称,分数。(3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g.(1),,,curriculum,=0001(2)EXECUTEstu_grade(3)EXECsp_rename'stu_grade','stu_g',curriculm表、grade表。(1)创建一个带参数的存储过程stu_p_g,当任意输入一个学生的姓名时,将从3个表中返回该学生的学号,选修的课程名称和课程成绩。(2)执行存储过程stu_g_p,查询“刘卫平”的学号,选修课程和课程成绩。(3)使用系统存储过程sp_helptext,查看存储过程stu_p_g的文本信息。(1)CREATEPROCEDUREstu_p_******@stu_namevarchar(40)AS:..SELECTstudent_info.,,,curriculum,=***@stu_name(2)EXECUTEstu_p_g'刘卫平'(3)EXECsp_help_text'stu_p_g'。(1)创建一个加密的存储过程stu_en,查询所有男学生的信息。(2)执行存储过程stu_en,查看返回学生情况。(3)使用Transact—SQL语句DROPPROCEDURE删除存储过程stu_en。(1)CREATEPROCEDUREstu_enWITHENCRYPTIONASSELECT*FROMstudent_infoWHERE性别='男'(2)EXECUTEstu_en(3)。(1)创建一个存储过程stu_g_r,当输入一个学生学号,通过返回输出参数获取该学生各门课程的平均成绩。(2)执行存储过程stu_g_r,输入学号0002。(3)使用Transact—SQL语句DROPPROCDURE删除存储过程stu_en.(1)CREATEPROCEDUREstu_g_******@stu_idchar(4)***@avg_******@avg_grade=AVG(分数)FROMgradeWHERE学号=***@stu_idGO(2):..EXECUTEstu_g_r'0002'(3)DROPPROCstu_g_r7输入以下代码,复制student_info表命名为stu2,为stu2表创建一个触发器stu_突然,当stu2表插入一条记录时,为该记录生成一个学号,该学号为学号列数据的最大值加1。执行以上代码,查看studentsdb数据库中是否有stu2表,展开stu2,查看其触发器项中是否有stu_str触发器。在查询分析器的编辑窗口输入以下代码:INSERTINTOstu2(学号,姓名,性别)VALUE(‘0001’,‘张主’,‘女’)运行以上代码,查看stu2表的变化情况,为什么插入记录的学号值发生了变化?SELECT*INTOstuFROMstudent_infoGOCREATETRIGGERstu_******@max+1UPDATEstu2SET学号=REPLICATE(’0’,4—len(***@max))+***@=(学号,姓名,性别)VALUE('0001','张主','女')GO8。为grade表建立一个名为insert_g_tr的INSERT触发器,当用户向grade表中插入记录时,如果插入的是在curriculm表中没有的课程编号,则提示用户不能插入记录,否则提示记录插入成功。请进行插入测试,分别输入以下数据:学号课程编号分数0004000037600050000769观察插入数据时的运行情况,说明什么?CREATETRIGGERinsert_g_trONdbo.******@ErrNoint,***@ErrMsgvarchar(255)ifexists(select课程编号frominsertedwhere课程编号='')******@errno=33333,***@errmsg='课程编号不可为空!!'gotoerrorend:..RETURNerror:******@******@errmsg9为curriculum表创建一个名为del_c_tr的DELETE触发器,该触发器作用是禁止删除curriculum表中的记录。CREATETRIGGERdel_s_trBEFOREDELETEonStudent_infoFOReachrowBEGINraise_application_error(-20001,'不能删除此表中的记录');。。