案例------存储过程

创建一个存储过程(insertResult)添加学生成绩,要求输入(学号,课程名,分数)
如果输入的学号不存在,则提示“学生基本信息表中不存在此学号,请检查后重新输入”
如果输入的课程不存在,则提示“还没有这门课程,请检查后重新输入”
如果该学生的专业中没有输入的课程,则提示“该学生的专业里面没有这门课”
判断输入的成绩是否是大于0,如果小于0则提示“你太狠了吧,竟然打负分!”
判断该学生的课程成绩是否已经存在,如果存在则提示“此学生的这门课程成绩已经录入了,请不要重复录入”
最后添加成功则提示“成绩添加成功”

CREATE PROCEDURE [dbo].[insertResult]
(
@nStudentNo int, ------------------------学号
@vchCourse varchar(32), ----------------课程
@nAchievement int -------------------------成绩
)

AS

SET NOCOUNT ON

--table_student_base_info为学生基本信息表,列student_no为学号,student_specialty为专业课名称,student_achievement为专业课成绩
--table_course为课程表, 列course_name为课程名

DECLARE @nCount int SET @nCount = 0
DECLARE @nSpecialty SET @nSpecialty = 0
DECLARE @nCourse SET @nCourse = 0
DECLARE @nExistAchievement SET @bIsMark = 0

--------------------------------------------------判断学号是否存在
SELECT
@nCountNo = COUNT(*)
FROM
table_student_base_info
WHERE
table_student_base_info.student_no = @nStudentNo

IF @nCount < 1
BEGIN
PRINT ‘学生基本信息表中不存在此学号,请检查后重新输入‘
RETURN
END

------------------------------------------------判断专业课及成绩
SELECT
@nSpecialty = COUNT(*),
@nExistAchievement = student_achievement
FROM
table_student_base_info
WHERE
table_student_base_info.student_specialty = @vchCourse

IF @nSpecialty < 1
BEGIN
PRINT ‘该学生的专业里面没有这门课‘
RETURN
END

IF @nExistAchievement >= 0
BEGIN
PRINT ‘此学生的这门课程成绩已经录入了,请不要重复录入‘
RETURN
END

------------------------------------------------判断指定课程
SELECT
@nCourse = course_name
FROM
table_course
WHERE
course_name = @vchCourse

IF @nCourse < 1
BEGIN
PRINT ‘还没有这门课程,请检查后重新输入‘
RETURN
END

----------------------------------------------成绩为负
IF @nAchievement < 0
BEGIN
PRINT ‘你太狠了吧,竟然打负分!‘
RETURN
END

----------------------------------------------录入成绩
UPDATE
table_student_base_info
SET
student_achievement = @nAchievement
WHERE
table_student_base_info.student_no = @nStudentNo

PRINT ‘成绩添加成功‘

案例------存储过程,布布扣,bubuko.com

时间: 2024-07-29 13:17:40

案例------存储过程的相关文章

MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06

目录 视图*** 什么是视图 为什么要用视图 如何生成视图 修改视图 --> 最好(千万)不要 关联表数据改动前 关联表数据改动之后 触发器 什么是触发器 触发条件 触发器语法结构 修改mysql的默认结束符(;) 触发器死循环 六个触发器的执行时机 新增前.新增后.删除前.删除后.更新前.更新后 NEW对象指代的就是当前记录(对象) 事务 ***** 什么是事务 事务的四大特性 ACID A:原子性 atomicity C:一致性 consistency I:隔离性 isolation D:持

SQL基础分页存储过程(案例一)

1 --分页 存储过程 案例 2 3 -- 所执行的存储过程 4 create proc pageForUsers 5 @currPage int, --当前页数 6 @pageSize int, --每页多少条记录 7 @count int output --总记录数 8 as 9 declare @firstIndex int 10 declare @lastIndex int 11 declare @sqlText varchar(200) 12 13 --统计总记录数 14 select

mysql存储过程中in、out、inout参数使用实际案例

1.参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去)//为了避免存储过程中分号(";")结束语句,我们使用分隔符告诉mysql解释器,该段命令是否已经结束了./**案例功能:求1-n的和开发者:徐守威时间:2016-08-13*/delimiter $create procedure p1(in n int)begin declare total int default 0; declare num int default 0; while num < n d

Oracle存储过程function语法及案例

create or replace function F01_SX03_SUM(statdate varchar2, code varchar2, para varchar2) RETURN number IS v_me number; v_mb number; begin if para = 'me' then select nvl(sum(nvl(me, 0)), 0) / 10000 into v_me from sx03_gl_accass t where t.ccode like (c

Oracle存储过程Procedure语法及案例

create or replace procedure replace(desstr in varchar2, replacestr in varchar2, tablename in varchar2, strgranularity in varchar2, strorgankey in varchar2, strstatisticdate in date) is begin update t41_systemcal_upday t1 set t1.calchar = replace(t1.c

Mysql存储过程知识,案例

Mysql存储过程知识,案例: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 8

[终章]进阶20-流程控制结构--if/case/while结构 - 三个while的存储过程案例(批量生成表单数据) - 随机长度的随机字符串的存储过程案例

1. mysql 存储过程中尽量使用 @变量 而不用局部变量, @变量不容易报错!权限小,更改一下就报错! 2. sql中判断相等'=' ,用'=' 不用'=='. 3. #流程控制结构 /* 顺序结构: 程序从上往下依次执行; 分支结构: 程序从多条路径中选择一条往下执行 循环结构: 程序在满足一定条件的基础上,重复执行一段代码 */ #一: 分支结构 #if 函数 : 实现简单的双分支 /*语法: 实现简单的双分支 if(表达式1,表达式2,表达式3) 执行顺序: 如果表达式1成立, 则if

利用存储过程进行表数据分离的案例分享

某客户有个需求,有2张业务表,数据量比较大,有2000W行,现在的需求是把这2张表中的一部分记录,根据一定的where条件分离出去,创建到另外的归档表中,即做表记录的迁移操作.最后得到的结果是:未满足筛选条件的记录留在原表中,满足筛选条件的表要插入到归档表中,并且要在原表中删除这些插入到归档表中的全部记录,最后满足:新表记录+归档记录=原表记录数 下面我来模拟一下这个过程: 由于没有拿到具体的建表语句,这里把表的内容最简化,只留2个列,作为最基本的演示 --连接到测试用户,创建测试表 SQL>

SQL存储过程编写案例

--存储过程的创建和调用演示 ------------------------------------------------------------------------------------------------- --1.不带参数的存储过程的创建 create procedure PRO_With_No_Param as Begin --begin可省略 select * from sc end --end可省略 --调用 exec PRO_With_No_Param --2.带参数