数据库管理实务(三)存储过程

存储过程

目录

存储过程

创建数据库、创建表

编写存储过程-创建执行对象插入值

编写存储过程-生成种族地区函数

编写存储过程-查看存储结果

编写存储过程-更新数据函数

编写存储过程-执行更新数据函数

实验后的数据结果对比

第6行数据对比:报考西部地区的非少数民族考生总分加10分;

第1行数据对比:报考非西部的少数民族考生总分加10分;

第10行数据对比:报考西部的少数民族考生总分加15分

实验总结:


创建数据库、创建表

代码如下:

create table Score

(

   sid int PRIMARY KEY, /*学生准考证号*/

   target_district char(1), /*考生报考地区 ‘e’、’s’、‘w’、’n’分别代表东、南、西、北*/

   total_score int,/*考生总分*/

   race char(20) /*考生所属民族、种族*/

)

GO

截图如下:

 

编写存储过程-创建执行对象插入值

代码如下:

CREATE PROC [dbo].score_generator

@id int,

@tar_dis char(1),

@t_s int,

@r char(20)

AS

INSERT INTO [dbo].Score VALUES (@id,@tar_dis,@t_s,@r);

GO

截图如下:

编写存储过程-生成种族地区函数

代码如下:

DECLARE @index int,

@Set_id int,

@Set_tar_dis char(1),

@Set_t_s int,

@Set_r char(20),

@rand int,

@flag int

SET @index = 1

SET @flag = 0

SET NOCOUNT ON; 

SET IMPLICIT_TRANSACTIONS OFF

BEGIN TRAN BULKINSERT

WHILE @index < 1000

BEGIN

IF(@index % 10 = 0)

    BEGIN

 

        BEGIN TRANSACTION BULKINSERT

    END

    SET @rand = RAND() * 100

    SET @Set_id = @index

    SET @Set_tar_dis = ( CASE WHEN (@rand % 4 = 0) THEN 'W'

                        WHEN (@rand %4 = 1) THEN 'E'

                        WHEN (@rand %4 = 2) THEN 'N'

                        ELSE 'S'

                        END)

    SET @Set_t_s = @rand

    SET @Set_r = ( CASE WHEN (@rand % 10 = 0) THEN '汉族'

                        WHEN (@rand %10 = 1) THEN '满族'

                        WHEN (@rand %10 = 2) THEN '回族'

                        WHEN (@rand %10 = 3) THEN '土家族'

                        WHEN (@rand % 10 = 4) THEN '苗族'

                        WHEN (@rand %10 = 5) THEN '壮族'

                        WHEN (@rand %10 = 6) THEN '蒙古族'

                        WHEN (@rand %10 = 7) THEN '维吾尔族'

                        WHEN (@rand % 10 = 8) THEN '瑶族'

                        WHEN (@rand %10 = 9) THEN '傣族'

                        ELSE '朝鲜族'

                        END)

    EXEC [dbo].score_generator @id = @Set_id,@tar_dis = @Set_tar_dis,@t_s = @Set_t_s, @r = @Set_r

    IF(@index % 10 = 0)

        BEGIN

        IF(@@ROWCOUNT = 10)

            BEGIN

                COMMIT TRANSACTION BULKINSERT

            END

        IF(@@ROWCOUNT != 10)

            BEGIN

                ROLLBACK  TRANSACTION BULKINSERT

            END

        END

    SET @index = @index + 1;

END

截图如下:

编写存储过程-查看存储结果

代码如下:

SELECT *

FROM [dbo].[Score];

截图如下:

编写存储过程-更新数据函数

代码如下:

create proc update_score

as

begin

declare @target_district char(1),@total_score int,@race char(20)

declare yb cursor scroll

for select target_district,total_score,race from dbo.Score

open yb

fetch next from yb

into @target_district,@total_score,@race

while @@FETCH_STATUS=0

begin

if(@target_district='w')

begin

if(@race='汉族') 

update dbo.Score set

total_score+=10 where current of yb

else

update dbo.Score set

total_score+=15 where current of yb

end

else  

if(@race!='汉族')

update dbo.Score set

total_score+=10 where current of yb

if(@total_score>750)

update dbo.Score set

total_score=750 where current of yb

fetch next from yb into @target_district,@total_score,@race

end

close yb

deallocate yb

end

 

截图如下:

 

编写存储过程-执行更新数据函数

代码如下:

execute update_score

截图如下:

实验后的数据结果对比

前:

后:

6行数据对比:报考西部地区的非少数民族考生总分加10分;

1行数据对比:报考非西部的少数民族考生总分加10分;

10行数据对比:报考西部的少数民族考生总分加15分

实验总结:

首先要熟悉整个实验的步骤,然后逐个去攻破,从整个实验来看,有几个函数需要执行,种族、地区、存储、更新数据等,在还没有进行实验之前,上网查询了解存储的过程,对整个存储过程有了概念,之后每个实验功能实现逐个学习,最后顺利完成实验。过程中加深了对游标的使用,加深了对存储过程的学习。

内容介绍: 本书共分6个模块,内容包括:Visual FoxPro 9.0技术基础、Visual FoxPro 9.0语言基础、数据处理、查询、程序设计、可视化技术。 目录: 模块1 Visual FoxPro 9.0技术基础7 学习目标与教学重点7 1.1 Visual FoxPro 9.0的增强功能8 1.2 数据库基础17 1.3 数据模型20 1.4 VFP集成开发环境24 1.5 项目管理器26 本章小结28 关键概念28 典型例题精讲29 知识拓展29 模块2 Visual FoxPro 9.0语言基础31 学习目标与教学重点31 2.1 数据表中的数据类型32 2.2 常量与变量36 2.3 运算符与表达式41 2.4 常用函数45 2.5 命令格式49 本章小结51 关键概念51 典型例题精讲52 能力训练55 模块3 数据处理60 学习目标与教学重点60 3.1 数据存储62 3.2 数据编辑67 3.3 数据计算75 3.4 排序与索引77 3.5 表间关系84 本章小结89 关键概念89 典型例题精讲90 能力训练91 模块4 查询98 学习目标与教学重点98 4.1 使用查询设计器创建视图100 4.2 顺序查询语句104 4.3 关系数据库标准语言SQL105 本章小结113 关键概念113 典型例题精讲114 能力训练117 模块5 程序设计122 学习目标与教学重点122 5.1 程序文件的建立124 5.2 基本的输入?输出语句126 5.3 程序设计的基本结构133 5.4 程序的模块化设计147 本章小结152 关键概念152 典型例题精讲152 能力训练156 模块6 可视化技术162 学习目标与教学重点162 6.1 表单技术164 6.2 常用控件169 6.3 报表技术189 6.4 菜单技术195 本章小结199 关键概念199 典型例题精讲199 能力训练202 主要参考书目206
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值