当前位置:文档之家› 数据库存储过程练习附答案(优.选)

数据库存储过程练习附答案(优.选)

数据库存储过程练习附答案(优.选)
数据库存储过程练习附答案(优.选)

存储过程、触发器练习

1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。

create proc p_dept

@dept char(20),@mannum int output

as

select @allcre=count(sno) from student

where sdept=@dept and ssex='男'

declare @num int

exec p_dept '计算机系',@num output

print @num

2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。(使用输出参数)。并执行该存储过程。

create proc p_cou

@name char(10),@allcre int output

as

select @allcre=sum(ccredit)from student,course,sc

where student.sno=sc.sno and https://www.doczj.com/doc/a18288399.html,o=https://www.doczj.com/doc/a18288399.html,o

and sname=@name group by sc.sno

declare @asum int

exec p_cou '刘晨',@asum output

print @asum

3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。

CREATE TRIGGER mes_sc

ON sc

FOR UPDATE

AS

IF UPDATE(grade)

BEGIN

ROLLBACK TRAN

PRINT '学生成绩不能被修改,请与教务处联系'

END

4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。

create trigger unisnertstu

on student for insert

as

if exists(select*from inserted where sdept='计算机系')

begin

print'此系人数已满,不能再添加'

rollback transaction

end

4、创建一删除触发器tri_xs,功能是当某个学生从student表中被删除时,同时也删除sc表中该学生的相关记录。

USE 学生选课

GO

CREATE TRIGGER tri_xs

ON student

FOR DELETE

AS

DELETE sc

WHERE sno IN (SELECT sno FROM DELETED)

GO

5、在学生选课数据库中,创建一学生联系方式表stu_info(id,sno,sname,address,phone)。其中id是自动编号。并向该表中插入一条记录(0611105,李雷,汉正街5号,1111111)。

6、在创建的stu_info表中,查找是否有‘王梅梅’同学,如果

没有,则在此表中添加该记录(0611108,王梅梅,人民路1号,22222222),编程实现将此信息添加到表中。

declare @id int

set IDENTITY_INSERT stu_info ON

if exists(select * from stu_info where sname='王梅梅')

begin

print '此人已存在.'

end

else

begin

select @id=max(id) from stu_info

set @id=@id+1

insert into stu_info(id,sno,sname,address,phone) values(@id,'0611108','王梅梅','人民路1号','22222222') end

最新文件---------------- 仅供参考--------------------已改成word文本--------------------- 方便更

数据库实验报告六_存储过程

HUNAN UNIVERSITY 数据库 实验报告 学生姓名 学生学号 专业班级 指导老师 2017 年5月24日

SELECT COUNT(*)INTO more90 FROM sc WHERE cno = countcno AND grade >= 90; /*将结果存入新表sumScore中*/ create table sumScore( scorestage char(10), number smallint); insert into sumScore values('x<60', less60); insert into sumScore values('60<=x<70', b60a70); insert into sumScore values('70<=x<80', b70a80); insert into sumScore values('80<=x<90', b80a90); insert into sumScore values('x>=90', more90); END$$ call sumScore(); /*调用上述存储过程*/ 首先创建存储过程,然后再调用存储过程。结果如下: (上述结果图截自Navicat软件) 可以看到,在stuinfo中新建了一个基本表sumscore,表中内容是数学课程成绩的各分数段的人数。 2、统计任意一门课的平均成绩。 代码如下: DELIMITER $$ CREATE PROCEDURE `scoreAvg`() BEGIN declare curname char(40) default null; /*临时存放课程名*/ declare curcno char(4) default null; /*临时存放课程号*/ declare curavg float; /*临时存放平均成绩*/ declare mycursor cursor for /*定义游标*/ select cno, cname from course;

sql数据库试验九:T-SQL语言存储过程及数据库的安全性

实验九:T-SQL语言、存储过程及数据库的安全性 一、实验目的 1.掌握数据变量的使用; 2.掌握各种控制语句及系统函数的使用; 3.掌握存储过程的实现; 4.掌握混合模式下数据库用户帐号的建立与取消方法; 5.掌握数据库用户权限的设置方法; 6.掌握在企业管理器中进行备份、恢复操作的步骤; 二、实验学时 2学时 三、实验要求 1.了解T-SQL支持的各种基本数据类型及变量的使用; 2.了解T-SQL各种运算符、控制语句及函数的功能及使用方法; 3.掌握存储过程的编写和运行方法 4.熟悉数据库完全备份及恢复的方法; 5.了解SQL Server 2008系统安全; 6.熟悉数据库用户、服务器角色及数据库角色的用法 7.完成实验报告。 四、实验内容 以student数据库为基础数据,完成以下内容 1.变量及函数的使用: 1)创建局部变量@xh(学号)并赋值,然后输出数据表student中所有等于该值的学生的学号、姓名、性别、所属院系及年龄等信息; 2)将学号为200515008的学生的姓名赋值给变量@name; 3)计算学生信息表student中学生最高年龄和最低年龄之差,并将结果付给@cz;4)定义一函数,按系别统计当前所有学生的平均年龄,并调用该函数。 5)定义一函数,通过姓名查询某学生的学号、性别、年龄、系别、选修课程名及成绩。 2.编写并执行存储过程 ,查询以下信息:班级、学号、姓名、pr_StuScore创建一个无参存储过程(1).性别、课程名称、考试成绩。 (2)创建一个带参数的存储过程stu_info,该存储过程根据传入的学生编号在student表中查询此学生的选修课程及成绩信息。 (3)创建一个带参数的存储过程StuScoreInfo2,该存储过程根据传入的学生编号和课程名称查询以下信息:班级、学号、姓名、性别、课程名称、考试成绩。

利用存储过程创建数据库及表

/* 利用存储过程来创建数据库 */ use master go --判断存储过程PRC_create_LX是否存在 if exists(select*from sys.procedures where name='PRC_create_LX') drop proc PRC_create_LX go --创建存储过程PRC_create_LX create proc PRC_create_LX as --判断数据库P_LX是否存在 if(exists(select*from sys.databases where name='P_LX')) begin print'存在' --数据库存在就删除 drop database P_LX --判断数据库是否删除成功 if(exists(select*from sys.databases where name='P_LX')) begin print'请先删除数据库' end else begin print'恭喜你删除数据库成功' end end else begin print'不存在' --数据库 create database P_LX --日志文件 on primary ( name='P_LX_data', filename='c:\cs\P_LX_data.mdf', size=3MB ) log on

( name='P_LX_log', filename='c:\cs\P_LX_log.ldf', size=3MB ) if(exists(select*from sys.databases where name='P_LX')) begin print'恭喜你新建数据库成功' end else begin print'数据库不存在请先创建数据库' end end go --判断表格是否存在(存在就删除) if exists(select*from sys.objects where name='department') drop table department if exists(select*from sys.objects where name='education') drop table education if exists(select*from sys.objects where name='crew') drop table crew print'创建表如下' --创建表格 create table crew ( C_ID int identity(1,1)primary key, C_name varchar(100), C_dept int, C_age int, C_set bit, C_workage int, C_hiredate date, C_education int, C_remark varchar(500) ) go create table department ( D_ID int references crew(C_ID),

数据库系统原理与开发-数据库存储过程

6.3 数据库存储过程

【本节的主要内容】 ?了解存储过程的概念 ?掌握存储过程创建、删除的方法?掌握存储过程的执行方法 ?掌握PostgreSQL的PL/SQL基本语法?理解存储过程的优缺点

一、什么是存储过程 ?存储过程(Stored Procedure)是一种数据库的对象; ?由一组能完成特定功能的SQL 语句集构成; ?是把经常会被重复使用的SQL语句逻辑块封装起来,经编译后,存储在数据库服务器端; ?当被再次调用时,而不需要再次编译; ?当客户端连接到数据库时,用户通过指定存储过程的名字并给出参数,数据库就可以找到相应的存储过程予以调用。

二、创建存储过程 ?不同的数据库系统创建存储过程的语法存在差异; ?许多数据库为创建存储过程和函数提供不同命令; ?如ORACLE、MySQL、SQL SERVER等数据库,使用CREATE PRECEDURE命令创建存储过程,使用CREATE FUNCTION命令创建函数。 ?PostgreSQL使用CREATE FUNCTION命令创建存储过程。

4 三、创建存储过程的语法 CREATE [ OR REPLACE ] FUNCTION name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) [ RETURNS retype | RETURNS TABLE ( column_name column_type [, ...] ) ]AS $$ //$$用于声明存储过程的实际代码的开始DECLARE -- 声明段BEGIN --函数体语句END; $$ LANGUAGE lang_name; //$$ 表明代码的结束, LANGUAGE 后面指明所用的编程语言 (1)name :要创建的存储过程名;(3)argmode :存储过程参数的模式可以为IN 、OUT 或INOUT ,缺省值是IN 。(4)argname :形式参数的名字。 (5)RETURNS :返回值;RETURNS TABLE :返回二维表 (2)OR REPLACE :覆盖同名的存储过程;

数据库函数、存储过程实验报告

南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据库系统实验4 实验(实习)日期2016-6-7 得分指导教师顾韵华 系计软院专业计科年级2014级班次计科 3 班姓名仇彤学号20141308071 一、实验目 1、掌握T-SQL函数及其调用方法。 2、掌握存储过程的定义及执行方法。 3、掌握有参存储过程的定义及执行方法。 4、掌握C#访问数据库的方法。 二、实验内容 1、使用系统函数(DA TEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 2、编写T-SQL程序,利用系统转换函数,检索总订购商品数在10~19的客户姓名。 3、定义函数RectArea,计算一个长方形的面积(长、宽作为函数的参数)。 4、在SPDG数据库中定义函数,根据商品编号,查询该商品的名称;(函数名为QryGoods)。 5、在SPDG数据库中定义存储过程GetSPBH,返回所有商品编号,并使用EXEC语句执行存储过程。 6、在SPDG数据库中定义存储过程KH_NJ_Qry,返回江苏南京的客户编号、姓名、及其订购商品的编号、商品名称和数量,并使用EXEC语句执行存储过程。 7、在SPDG数据库中定义存储过程SP_FOOD_Qry,返回食品类商品编号、商品名称及其订购客户编号、姓名、订购数量,并使用EXEC语句执行存储过程。 8、定义存储过程SP_Total,查询指定商品编号的总订购数。并执行该存储过程。 9、定义存储过程SP_TotalCost,查询指定商品编号的总订购金额。并执行该存储过程。 10、定义存储过程SP_Name_Qry,查询指定商品名称的商品信息。并执行该存储过程。 11、定义存储过程SP_Name_Qry1,查询指定商品名称的商品信息;若存在,输出1;否则,输出0。并执行该存储过程。 12、定义存储过程SP_Name_Qry2,查询指定商品名称的商品信息;若存在,用输出参数传出1;否则传出0。 三、实验过程与结果 1、使用系统函数(DATEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 设计的SQL语句如下: print datediff(d,getdate(),'2020-1-1') 执行结果:

数据库实验10存储过程

实验10存储过程 一、实验目的 1. 掌握用户存储过程的创建操作。 2. 掌握用户存储过程执行操作。 3. 掌握用户存储过程的删除操作。 二、相关知识 存储过程:SQL Server 提供的一种将一些固定操作集中起来,由SQL Server 数据库服务器来完成的功能。 存储过程是机构编译和优化后存储在数据库服务器中的SQL语句,只需要调试即可使用。存储过程的优点有: 1)让服务器端能够快速执行某些SQL语句。 2)减少了服务器和客户端之间的数据流的。 3)方便实施企业规则。 4)封装后的过程对数据库保护具有一定安全性。 三、实验内容 1. 创建带输入参数的存储过程。 2. 执行所创建的存储过程。 3.删除所有新创建的存储过程。 四、实验步骤 (一) 1. 创建带输入参数的存储过程。 1)启动SQL Server Management Studio,选择要操作的数据库,如“学生选课”数据库,然后打开新建查询窗口。 2)在查询命令窗口中输入创建存储过程的CREATE PROCEDURE 语句,如图14.11.1所示: 这里,我们创建一个带输入参数的存储过程proc_xsqk1,其中的输入参数用于接收课程号,默认值为“001”,然后在“选课表”中查询该课程成绩不及格的学生学号,接着在“学生表”中查找这些学生的基本信息,包括学号、姓名、性别和联系电话信息,最后输出。 图14.11.1在查询窗口中创建存储过程 3)点击快捷工具栏上的快捷铵钮“√”,对输入的CREATE PROCEDURE 语句进行语法分析。 如果有语法错误,则进行修改,直到没有语法错误为止。 4)点击快捷工具拦上的快捷按钮“!”,执行CREATE PROCEDURE 语句。 5)查看生成的存储过程,如图14.11.2。

如何备份数据库表结构含存储过程

如何备份数据库表结构含存储过程 --以下生成整个数据库的SQL脚本,相当好用。 --(scptxfr.exe的路径要正确,在安装目录下) declare @cMd varchar(1000) set @cmd = 'master.dbo.xp_cmdshell ' + '''c:/"Microsoft ' + 'SQL Server"' + '/MSSQL/Upgrade/scptxfr.exe ' + ' /s Y ourServerName /p Y ourSAPassword /I /d Y ourDBName /f ' + 'c:/Y ourDBName.sql''' exec (@cmd) 命令行语法: SCPTXFR /s <服务器> /d <数据库> {[/I] | [/P <密码>]} {[/F <脚本文件目录>] | [/f <单个脚本文件>]} /q /r /O /T /A /E /C /N /X /H /G /Y /? /s —指示要连接到的源服务器。 /d —指示要为之编写脚本的源数据库。 /I —使用集成安全性。 /P —sa 要用的密码。请注意登录ID 始终为sa。 若/P不使用或标志后面没有密码, 则将使用空密码。不与/I 兼容。 /F —脚本文件应生成到的目录。 这意味着为每个对象分类生成一个文件。 /f —所有脚本将保存到的单个文件。 不与/F 兼容。 /q —在所生成的脚本中使用被引用的标识符。 /r —为脚本中的对象包括drop 语句。 /O —生成OEM 脚本文件。无法用于/A或/T。 这是默认的行为。 /T —生成UNICODE 脚本文件。无法用于/A或/O。 /A—生成ANSI 脚本文件。无法用于/T 或/O。 /? —命令行帮助。 /E —发生错误时停止脚本编写。 默认行为是记录该错误而后继续。 /C —指示替代服务器CodePage(代码页)的CodePage。/N —生成ANSI PADDING。 /X —编写SP和XP 脚本以分隔文件。 /H —生成不带首部的脚本文件。(默认: 带首部)。 /G —使用指定的服务器名称作为所生成的输出文件的前缀(中的划线)。 /Y—为“扩展属性”生成脚本(仅对8.x 服务器有效)。

MySql_数据库用java程序创建表以及存储过程

MySql 数据库用java程序创建表以及存储过程 1.同一般的数据库操作基本一样。 2.Statement.executeUpdate(String sql); 这个方法可以用来执行DDL语句,以及执行更新操作。 3.需要注意CallableStatement 接口的用法。 用于执行SQL 存储过程的接口。JDBC API 提供了一个存储过程SQL 转义语法,该语法允许对所有RDBMS 使用标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,则必须将其注册为OUT 型参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个参数的编号是1。 {?= call [,, ...]} {call [,, ...]} IN 参数值是使用从PreparedStatement 中继承的set 方法设置的。在执行存储过程之前,必须注册所有OUT 参数的类型;它们的值是在执行后通过此类提供的get 方法检索的。 4.需要注意存储过程调用的方法。 5.registerOutParameter 的使用方法。 void registerOutParameter(int parameterIndex, int sqlType) throws SQLException 按顺序位置parameterIndex 将OUT 参数注册为JDBC 类型sqlType。所有OUT 参数都必须在执行存储过程前注册。由sqlType 指定的OUT 参数的JDBC 类型确定必须用于get 方法来读取该参数值的Java 类型。如果预期返回给此输出参数的JDBC 类型是取决于此特定数据库的,则sqlType 应该是java.sql.Types.OTHER。 方法getObject(int) 检索该值。 参数: parameterIndex - 第一个参数是1,第二个参数是2,依此类推。 sqlType - java.sql.Types 定义的JDBC 类型代码。如果参数是JDBC 类型NUMERIC 或DECIMAL,则应使用接受标度值的那种。 下面是一个具体的程序实例: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package gui.database; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author zhfdai */ public class DBManager {

数据库实验——存储过程

数据库原理与应用实验报告 题目:存储过程 学号:_________ 姓名:_________ 教师:_________

实验题目 1、实验内容 1 创建学生表Student CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20)); 插入记录(200215121, 李勇,男,20,CS) (200215122,刘晨,女,19,CS) (200215123, 王敏,女,18,MA) (200215125,张立,男,19,IS) 2 创建一个名为Student_Info的无参数存储过程,该过程实现从表中查询所有学生基本信息。CREATE PROCEDURE Student_Info AS SELECT * FROM Student 3 执行Student_Info存储过程 EXECUTE Student_Info 4 创建一个名为Student_CS的无参数存储过程,该存储过程实现从表中查询所有计算机系的学生姓名 5 执行Student_CS存储过程 6 创建带参数的存储过程。输出指定学号的学生信息。 CREATE PROCEDURE Query_Student_Info @Sno char(9) AS SELECT * FROM Student WHERE Sno=@Sno 7 执行存储过程Query_Student_Info EXECUTE Query_Student_Info ‘200215121’ 8 创建带参数的存储过程。根据指定参数增加学生信息,如果学生编号已经存在则不能增加。CREATE PROCEDURE Add_Student @Sno char(9), @Sname char(20), @Ssex char(2), @Sage smallint, @Sdept char(20) @Flag int=0 AS SELECT @Flag=count(*) FROM Student WHERE Sno=@Sno IF @Flag=0 BEGIN INSERT INTO Student

数据库原理课程设计报告报告实验创建存储过程与触发器

存储过程与触发器实验日期和时间: 2016 年 5 月13 日、星 期 五第节 实验室:DJ2-信息管理实验室 班级:学号:姓名: 实验环境: 1.硬件:笔记本电脑 2.软件:SQL Server 2012 实验原理: 存储过程概念:存储过程是事先编好的,存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。存储过程可以接受用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输入参数。 触发器概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 实验任务: 此作业成绩得分根据你完成的任务的难度和数量评分,完成后在实验室给老师演示验收,课后提交电子版报告。如额外完成自拟题目应当事先将所拟题目提交给老师或在报告中明确标注题意。 假定有学校的图书馆管理信息系统,可以用于日常管理书库和同学们的借还书工作。 以下列出参考的库表情况: 根据管理的业务需求来分析,该管理信息系统的数据库应至少包括如下数据表:(打★号的是必须有的表) 1.★图书现有库存表。作用:记录图书的现有库存情况。至少包括:书号、书名、 作者、简介、类别、价格、出版社、出版日期、现有库存数量、最小库存量、库 存总量、库存位置等。 2.★读者信息表。作用:记录读者信息。至少包括:读者编号、证件类型、证件号 码、姓名、性别、职业(可填写教师、学生、教工、其它……)、所属单位、地址、 联系电话等。 3.★借书记录表。作用:记录借书情况,以及是否归还。至少包括:借阅ID(主键, 可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员 编号……等。 4.★还书记录表。作用:记录还书情况。至少包括:还书ID(主键,可设置为自动 编号)、书号、读者编号、归还数量、归还日期、是否超期(超过假设45天为超 期)、超期天数、管理员编号……等。(附:为简化操作,续借可视为归还后再借)。 5.管理员信息表。作用:记录负责管理书库和借书还书工作的管理员信息。至少包 括:管理员编号、职工编号(在职工档案表中的职工编号)、用户名、密码、管理

数据库存储过程练习附答案

存储过程、触发器练习 1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。 create proc p_dept @dept char(20),@mannum int output as select @allcre=count(sno) from student where sdept=@dept and ssex='男' declare @num int exec p_dept '计算机系',@num output print @num 2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。(使用输出参数)。并执行该存储过程。 create proc p_cou @name char(10),@allcre int output as select @allcre=sum(ccredit)from student,course,sc where student.sno=sc.sno and https://www.doczj.com/doc/a18288399.html,o=https://www.doczj.com/doc/a18288399.html,o and sname=@name group by sc.sno declare @asum int exec p_cou '刘晨',@asum output print @asum 3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。 CREATE TRIGGER mes_sc ON sc FOR UPDATE AS IF UPDATE(grade) BEGIN ROLLBACK TRAN PRINT '学生成绩不能被修改,请与教务处联系' END

存储过程_将图片存入数据库

一、写一个存储过程,将图片存入数据库中 基本情况介绍: 数据库版本:oracle 11g 数据库用户:scott 数据库密码:tiger JDK:1.6 要导入的图片:D:\picture\1.jpg --创建存储图片的表 CREATE TABLE IMAGE_LOB (T_ID V ARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL); --创建存储图片的目录 CREATE OR REPLACE DIRECTORY IMAGES AS 'D:\picture'; 存储过程如下: CREATE OR REPLACE PROCEDURE IMG_INSERT (TID V ARCHAR2,FILENAME V ARCHAR2) AS F_LOB BFILE;--文件类型 B_LOB BLOB; BEGIN iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE) V ALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB; --插入空的blob F_LOB:= BFILENAME ('IMAGES', FILENAME); --获取指定目录下的文件 DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONL Y); --以只读的方式打开文件 DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB)); --传递对象 DBMS_LOB.FILECLOSE (F_LOB); --关闭原始文件 COMMIT; END;

教学:数据库-存储过程资料

教学三:存储过程 一、教学目的 (1)掌握T-SQL流控制语句; (2)掌握创建存储过程的方法; (3)掌握存储过程的执行方法; (4)掌握存储过程的管理和维护。 二、教学内容 1、创建简单存储过程 (1)创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出“已删除!”信息,否则就给出“不存在,可创建!”的信息。 if exists(select name from sysobjects where name='stu_pr'and type='p') begin print'已删除!' drop procedure stu_pr end else print'不存在,可创建!' go create procedure stu_pr as select* from Student_20103322left outer join SC_20103322 on (Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on (Course_https://www.doczj.com/doc/a18288399.html,o=SC_https://www.doczj.com/doc/a18288399.html,o) where classno='051'

exec stu_pr 2、创建带参数的存储过程 (1)创建一个名为stu_proc1的存储过程,查询某系、某姓名的学生的学号、姓名、年龄,选修课程名、成绩。系名和姓名在调用该存储过程时输入,其默认值分别为“%”与“林%”。执行该存储过程,用多种参数加以测试。 if exists(select name from sysobjects where name='stu_proc1'and type='p') begin print'已删除!' drop procedure stu_proc1 end else print'不存在,可创建!' go create procedure stu_proc1

数据库存储过程实验报告

实验12 一、导入数据 二、编写存储过程: createproccluster_kmeans as setnocount on declare @pointX1 numeric(10,6) declare @pointY1 numeric(10,6) declare @pointX2 numeric(10,6) declare @pointY2 numeric(10,6) select top 1 @pointX1=X,@pointY1=Y from dataset selecttop 1 @pointX2=X,@pointY2=Y from dataset where X <> @pointX1 or Y <> @pointY1

declare @t1 table( pointX numeric(10,6), pointY numeric(10,6) ) declare @t2 table( pointX numeric(10,6), pointY numeric(10,6) ) insert @t1 select* from dataset wherepower(@pointX1-X,2)+power(@pointY1-Y,2)=power(@pointX2-X,2)+power(@pointY2-Y,) select @pointX1=avg(pointX), @pointY1=avg(pointY) from @t1 select @pointX2=avg(pointX), @pointY2=avg(pointY) from @t2 while exists ( select 1 from @t1 wherepower(@pointX1-pointX,2)+power(@pointY1-pointY,2)>power(@pointX2-pointX,2)+power (@pointY2-pointY,2) ) or exists ( select 1 from @t2 where power(@pointX1-pointX,2)+power(@pointY1-pointY,2)

实验报告5 数据库编程存储过程

实验5:数据库编程——存储过程 一.实验目的 通过本实验使学生掌握存储过程的基本概念和创建、执行、删除方法。 二.实验类型验证型 三.实验学时2学时 四.实验原理及知识点 1.Transact-SQL编程 2.存储过程的创建和执行 3.存储过程的修改和删除 五.实验环境 1.硬件设备要求:PC及其联网环境; 2.软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。 六.实验内容及步骤 利用存储过程实现下面的应用:从账户1转指定数额的款项到账户2中。假设账户关系表为Account(Accountnum,total) 存储过程 create procedure pro_transfer (@inAccount int,@outAccount int,@amount float) as declare@totalDepositOut float, @totalDepositIn float, @inAccountnum int; begin select@totalDepositOut=(select total from Account where accountnum =@outAccount); if (@totalDepositOut is null) begin rollback; return; end if (@totalDepositOut<@amount) begin rollback;

return; end select@inAccount=(select accountnum from Account where accountnum =@inAccount) if(@inAccountnum is null) begin rollback; return; end update Account set total=toal-@amount where accountnum=@outAccount; update Account set total=total+@amount where accountnum=@inAccount; commit; end 七.实验总结 通过这次实验学会写简单的存储过程,了解了在sql server 2008中的存储过程的基本语法,发现存储过程的语法和pascal有很大的相似之处,不过sql server 2008的语法和书上的语法有很大的不同,只能自己去网上找资料,不过这锻炼了我的自学能力,不过就写一个存储过程还是有很多不够,还是要勤加练习。

数据库专题训练------存储过程

数据库技专题训练I(2014年春) 序 号:数据库专题训练------存储过程 实验报告 系别:XXXXX 班级:计XXXXX班 姓名:xxx 学号:XXXX 成绩: 评语: 指导教师签字:日期:

数据库专题训练实验-------存储过程 【实验目的】 1. 掌握存储过程的创建方法。 2. 掌握存储过程的使用方法。 【实验环境】 Sql server 2005 【实验重点及难点】 1. 创建无参数的存储过程。 2. 创建有参数的存储过程。 3. 执行存储过程的方法。 4. 查看存储过程的方法。 5. 修改存储过程的方法。 6. 删除存储过程的方法。 【实验内容】 设定已有一个名为XSCJ 的数据库,在XSCJ 数据库中创建如下关系表:学生信息表S ,课程表C ,成绩表SC 。 学生基本信息表S : Sno Sname Ssex Sage Sdept S1 李强 男 19 计算机 S2 王松 男 20 通信工程 S3 李丽 女 18 电子 S4 张平 女 21 计算机 S5 何晴 女 19 通信工程 S6 王小可 男 20 计算机 S7 张欢 男 20 电子 课程信息表C : 学生成绩表SC : Cno Cname Cteacher C1 C 语言 刘军 C2 C++程序设计 李彤 C3 操作系统 吴明 C4 数据库 李白 C5 计算机网络 苏志朋 C6 数据结构 刘军 1、 创建一个名为sp_cxxs 的存储过程,要求该存储过程列出计算机系所有学生 Sno Cno Score S1 C2 85 S2 C3 72 S3 C4 90 S4 C1 84 S5 C2 58 S6 C3 88 S3 C1 69 S1 C5 88 S1 C3 95

数据库《创建和使用存储过程》实验报告

x x大学计算机与信息技术学院 实验报告 姓名学号专业班级 课程名称数据库系统概论实验日期成绩指导教师批改日期实验名称创建和使用存储过程 实验内容 [目的和意义] ?了解存储过程的概念和作用 ?掌握存储过程的创建、执行以及查看、修改和删除 [实验内容] ?存储过程的创建与执行 ?存储过程的查看、修改与删除 [实现步骤] 存储过程是独立与数据表之外的数据库对象,是SQL SERVER服务器上一组预编译的Transact-SQL语句,用于完成某项任务,它们可以接受参数、输出参数、返回单个或多个结果、返回状态值和参数值。存储过程独立于源代码,可单独修改,可以被调用任意次,可以引用其他存储过程。 (T-SQL是Microsoft公司在关系型数据库管理系统SQL Server中的SQL-3标准的实现,是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量,运算符,函数,流程控制和注释等语言元素,使得其功能更加强大.) 存储过程使数据管理变得更容易。通常在设计数据库的同时,设计其相应的功能。比如,在学生选课数据库中,需要完成如下工作: 1、根据学号,检索某位学生的各科成绩和平均成绩。 2、根据课程名,检索选修某门课程的学生姓名和学生总人数。 3、但在学生表中修改某个同学的学号时,要检索这个同学的选课表信息,并在选课表中调整相应的学号。 4、判断在选课表中加入的新记录是否在学生表中存在。 我们可以将上述功能以存储过程的形式存储在数据库中,以供日后调用。

SQL Server中存储过程分为两类:系统存储过程和用户自定义的存储过程。系统存储过 程主要存储在master数据库中,并一般以sp_为前缀,它们从系统表中获取信息,以完成许多管理性或信息性的活动。系统存储过程可以在其他数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。在创建新数据库时,一些系统存储过程会在新数据库中被自动创建。用户定义的存储过程是由用户创建的,用来完成特定设计功能。 存储过程的主要优点: 1、模块化编程。创建一次存储过程,它就能永久存储在数据库中,可以在程序中重复调用任意多次。所有的客户端程序可以使用同一个存储过程实现对数据库的操作,从而确保数据访问和操作的一致性,也提高了应用程序的可维护性。 2、快速执行。当某操作要求大量的Transact-SQL代码或者要重复执行时,存储过程要比Transact-SQL批处理代码快得多。当创建存储过程时,SQL Server对它进行分析和优化,在第一次执行后,它就驻留在内存中,省去了重新分析、重新优化和重新编译的工作,提高了执行效率。 3、减少网络通信量。存储过程可以由几百条Transact-SQL语句组成,但存储过程存放在服务器端,因此客户端要执行存储过程,只需要传送一条执行存储过程的命令,从而减少了网络流量和网络传输时间。 4、提供安全机制。可以授予用户执行存储过程的权限,那么即使该用户没有访问在存储过程 中引用的表或视图的权限,该用户也完全可以执行存储过程。 1.使用创建存储过程模板创建存储过程 (1)打开SQL Server Management Studio,展开节点“对象资源管理器”|“数据定义”|“可编程性”|“存储过程”,在窗口的右侧显示出当前数据库的所有存储过程。单击鼠标右键,在弹出的快捷菜单中选择“新建存储过程”命令,如图1所示。

数据库系统原理存储过程实验

数据库系统原理 实验五存储过程 (4课时) 实验过程: 1.预习7. 2.9节 2.教师补充讲解存储过程知识 3.学生根据实验报告进行实验 附:创建数据库和数据表、添加数据的语句: create database shiyan5 GO use shiyan5 create table students( sno char(4)primary key, sname char(8), ssex char(2)) insert into students values('0001','李好','男') insert into students values('0002','张灵','女') insert into students values('0003','刘文刚','男') insert into students values('0004','孟蕾','女') create table courses( cno char(3)primary key, cname char(20)) insert into courses values('001','计算机基础') insert into courses values('002','数据库') create table reports( sno char(4), cno char(3), grade numeric(5,1), primary key(sno,cno), foreign key(sno)references students(sno), foreign key(cno)references courses(cno)) insert into reports values('0001','001',90) insert into reports values('0001','002',88) insert into reports values('0002','001',95) insert into reports values('0002','002',92) insert into reports values('0003','001',80) insert into reports values('0003','002',82) insert into reports values('0004','001',85) insert into reports values('0004','002',76)

SQL数据库存储过程问题

问题:存储过程解析1、数据库信息 常规 uffl 名称画:ImgTB 朗有者:dbo 创建日期:200B-7-2S 15:5B:54 文件迪PRIMARY 行:5 列: 键ID 名称数据类型丸小.一空默认信 ImglD ImgName ImgDes ImgExtName ImgTypelD UpdateTime IrngBiinar^ mt4 nvarchw255 nvarchaff1000 nvarchar10 ml4 smalldat.. . 4 im^ige1€ □ □ I s r r (01 [getdati >|l Ft im se NT 34亍项目 □ ^- ? ffi s :田.:S-. ffl-a-' . a-' s-s-. ?:曰 加 创 st de db o k a o s b 田 m ln vn db S 型 类 數 的 ] f i 定 I 图 皤 户 色 则 认 户 M OO' 关 表 视 存 用 角 规 默 用 5 胺 昭 冒 餌 苗J AddAndUp dat elm g dt_aditos a ur ct control dt_addt csauretc cntr O1_TI d.t_%ddus er o b j( ct ^dt_adduserobject_vcs 勾 dt_che ck i nobject 蚪 dt_check i nobj ec t_n 号 dt_check?utob j ect 召d£_ che ckc u t &bj e c t_ji ■fy dt_di spl ayo aerror ^dt_di spl^yo a4rror_u ^dt_droppr operti esbyi d dt_dropuser obj ectbyi d I 舛dt_gener4teans i n^ine ^dt_get&ljwi thprop |-^ dt_je t olj w i thpr op_u dt_getproper ti asbyid ^^dt_getproperti a shjri d_u ^?dt_getproperti e sby1d_v c s ^)dt_getproperti esbyid_vcs_u j^dt_i s under sour ce control i sundersour cecontr ol u

相关主题
文本预览
相关文档 最新文档