MySql创建简单的存储过程
今天是碰巧老师布置了一道作业,要求创建一个简单的存储过程来实现不同的五级制与百分制的成绩转换
题目如下 创建一个存储过程,将一个五级制成绩转换成相对应的分数区间
等级成绩 | 分数区间 |
---|---|
A | >90 |
B | 80-89 |
C | 70-79 |
D | 60-69 |
E | <60 |
要求一:使用IF嵌套创建proc1存储过程
要求二:使用case 语句创建proc2存储过程
注:等级制成绩由参数S (定位长度1)
分析
首先我们先看题目 将一个五级制成绩转换成相对应的分数区间
那么就是我们需要创建一个简单的存储过程 我们输入不同的等级 则存储过程输出不同的内容
比如输入A 则存储过程输出 '>90'
(IN a VARCHAR(1) )
IN - 是默认模式。在存储过程中定义IN参数时,调用程序必须将参数传递给存储过程。
另外,IN参数的值被保护。这意味着即使在存储过程中更改了IN参数的值,
在存储过程结束后仍保留其原始值。换句话说,存储过程只使用IN参数的副本。
OUT - 可以在存储过程中更改OUT参数的值,
并将其更改后新值传递回调用程序。请注意,
存储过程在启动时无法访问OUT参数的初始值。
INOUT - INOUT参数是IN和OUT参数的组合。
这意味着调用程序可以传递参数,
并且存储过程可以修改INOUT参数并将新值传递回调用程序。
题目一
-- 首先这个存储过程我们需要定义一个参数 其次就这个参数要求长度为 1
-- create 创建 or 或者 replace 替代 PROCEDURE 一个存储过程 proc2 存储过程的名字 (IN(模式详细请看上方) s VARCHAR(1) (传递进存储过程参数类型和长度限制) ) begin 开始 。。。。。。(存储过程内容) end;(结束)
CREATE PROCEDURE proc1 ( IN s VARCHAR ( 1 ) ) BEGIN
SELECT
IF
(
s = 'A',
'>90',
IF
(
s = 'B',
'80--89',
IF
(
s = 'C',
'70--79',
IF
(
s = 'D',
'60--69',
IF
( s = 'E', '<60', '请输入正确的等级!' ))))) AS '结果'
FROM
DUAL;
END
点击创建proc1存储过程,创建成功
运行存储过程,结果如下
题目二
CREATE PROCEDURE proc2 ( IN s VARCHAR ( 1 ) ) BEGIN
SELECT
CASE
WHEN
s = 'A' THEN
'>90'
WHEN s = 'B' THEN
'80--89'
WHEN s = 'C' THEN
'70--79'
WHEN s = 'D' THEN
'60--69'
WHEN s = 'E' THEN
'<60'
END AS '结果'
FROM
DUAL;
END
点击运行创建proc2,创建成功 使用工具为Navicat 15
运行创建的存储过程,要求实现
标签:存储,--,创建,WHEN,参数,MySql,过程 来源: https://www.cnblogs.com/Robin-Lin/p/16409427.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。