SQL server 变量if,while,存储过程

时间:2022-06-24 00:14:54

一.变量

1.if循环

SQL server 变量if,while,存储过程

2.

SQL server 变量if,while,存储过程

3.while循环

  declare @ss int
  set @ss =2
while @ss<10
begin
  print 'Hello'
  set @ss=@ss+1
end
  --break 跳出循环

  declare @sss int
  set @sss=2
  while @sss<10
begin
  print'Hello'
  set @sss=@sss+1
if @sss=6
  break
end
  --continue 跳出本次循环,继续下次循环

  declare @ssss int
  set @ssss=2
while @ssss<10
begin
  set @ssss=@ssss+1
if @ssss>4and @ssss<7
  continue
  print'Hello'
end

4.练习,查看循环的过程

SQL server 变量if,while,存储过程

5.case when --相当于if 但是有局限性,需要具体到值
--查询老师表的年龄,如果>=35,【老头子】
--<=30【小青年】
--其他,【正当年】
select age,
case age
when 35 then '老头子'
when 36 then '老头子'
when 37 then '老头子'
when 38 then '老头子'
when 30 then '小青年'
when 29 then '小青年'
when 28 then '小青年'
when 27 then '小青年'
else '正当年'
end
from teacher

6.查询英语分数最高的学生的性别,若男,【这是一个男生】
--若女,【这是一个小姑娘】
--若英语分数超过90,【成绩非常好,继续保持】
  declare @xing char(10)
  select @xing =sex from students where code =(select top 1 code from score order by yingfen desc)
  declare @yingfen int
if @xing ='男'
  print'这是一个男生'
else if @xing ='女'
  print'这是一个小姑娘'
else if @yingfen>90
  print'成绩非常好,继续把持'

7.查询数学分数最高的学生的任课教师的姓名和科目,
--【**老师教课质量高,是个**教师!】
declare @jname varchar(50)
declare @lesson char(10)
select @jname=name from teacher where code=
(select shujiao from Student where code=
(select top 1 code from score order by shufen desc) )

select @lesson=lesson from teacher where name =@jname
print @jname +'老师教课质量高'+'是个'+rtrim(@lesson)+'教师'

7.查询三班语文教师的工号,姓名,以及所教科目
select code,lesson,name from teacher where code=(select top 1 yujiao from student where banji='三班' order by yujiao)

8.查询总分最高的学生的语文教师的所有信息
select * from teacher where code =
(select yujiao from student where code =
(select top 1 code from score group by code order by SUM(shufen+yufen+yingfen)desc))

二.存储

1.create proc firstproc--创建一个存储过程
as --存储过程关键字
select * from student--存储过程的语句
go
--执行存储过程的语句(两个都可以)
exec firstproc
execute firstproc

--存储过程可以有返回值
--定义一个变量去接收
declare @fanhui int
exec @fanhui = firstproc--需要执行之后才会有返回值,用变量接收
select @fanhui as 返回值--查看返回值

--修改存储过程的语句
alter proc firstproc
as
select * from score
go

练习: 利用存储过程查找语文教师张晓华所教课程的学生的分数
        过80的算优秀,优秀人数超过3个人即为【教师评测达标】
        若不到3个人,【不达标】
  create proc thirdproc
as
  declare @code int
  select @code=code from teacher where name ='张晓华'
  declare @count int
  select @count =COUNT(*)from score where code in (select code from students where yujiao =@code)and yufen>80
if @count>3
  print'教师评测达标'
else
  print'教师评测不达标'
go
  exec thirdproc

2.

SQL server 变量if,while,存储过程

3.

SQL server 变量if,while,存储过程

练习:存储过程
查看所输入编号的学生是否能够结业,两门以上及格即可结业
三门都及格,【优秀】
两门及格,【结业】
一门及格,【不结业】
三门都不及格,【请重修】
  create proc sevenproc
  @code int
as
  declare @yufen decimal(18,2),@shufen decimal(18,2),@yingfen decimal(18,2)
  select @yufen =yufen from score where code =@code--分别查询语数英的分数
  select @shufen =shufen from score where code =@code
  select @yingfen =yingfen from score where code =@code
  declare @count int--定义标记变量
  set @count=0 --标记变量在下面需要先使用再赋值,所以先给它为0
if @yufen>=60 --判断语数英是否及格
  set @count=@count+1--及格的时候count+1
if @shufen>=60
  set @count=@count+1
if @yingfen>=60
  set @count=@count+1

if @count=3 --判断count的值:判断几门课及格
  print'优秀'
else if @count=2
  print'结业'
else if @count=1
  print'不结业'
else
  print'请重修'
go
--执行
  exec sevenproc 4

4.不带参数带返回值的存储过程
create proc elevenproc
as
return 5
go
--执行
--需要一个变量来接收这个返回值
declare @fan int
exec @fan=elevenproc
print @fan

5.带参数,带返回值的存储过程
create proc twelveproc
@one int,
@two int
as
declare @sum int
set @sum=@one+@two
return @sum
go
--执行
declare @fanhuizonghe int
exec @fanhuizonghe = twelveproc 2,4
print @fanhuizonghe

练习:输入一个学生的学号,想要经过存储过程之后得到在这个学生的总分
create proc thirteenproc
@code int
as
  declare @yu decimal(18,2),@shu decimal(18,2),@ying decimal(18,2)
  select @yu =yufen from score where code =@code
  select @shu =shufen from score where code =@code
  select @ying =yingfen from score where code =@code
  declare @sum int
  select @sum=@yu+@shu+@ying
  return @sum
go

  declare @fan int
  exec @fan =thirteenproc 5
  print @fan

SQL server 变量if,while,存储过程的更多相关文章

  1. Sql Server 带参数的存储过程执行方法

    Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...

  2. SQL Server技术问题之存储过程与sql语句的优缺点

    优点: 1. 允许模块化程序设计.2.可维护性高,只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储过程可独立于程序源代码而单独修改,而不需要更改.测试以及重新部署程序集 ...

  3. sql server 常用的系统存储过程

      系统存储过程 说明 sp_databases 列出服务上的所有数据库 sp_helpdb 报告有关指定数据库或所有数据库的信息 sp_renamedb 更改数据库的名称 sp_tables 返回当 ...

  4. &lbrack;转&rsqb; sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...

  5. SQL Server变量赋值的方法

    SQL Server变量赋值我们经常会遇到,下面就为您介绍SQL Server变量赋值的两种方法,希望可以对您学习SQL Server变量赋值有所帮助. SQL Server中对已经定义的SQL Se ...

  6. sql server 常用的扩展存储过程

    sql server 里面提供了丰富的系统存储过程来辅助我们管理数据库以及开发.今天分享介绍一些常用的数据库扩展存储过程 xp_cmdshell 这个大家都比较熟悉了,使用xp_cmdshell 可以 ...

  7. MS SQL Server之光标、存储过程和触发器

    光标 通常数据库操作被认为是以数据集为基础的操作,但是光标被用于以记录为单位来进行操作,来获取数据库中的数据的子集.光标一般用于过程化程序里的嵌入的SQL语句. 对光标的定义如下: DECLARE C ...

  8. SQL SERVER 自带系统存储过程分类

    目录存储过程 用于实现 ODBC 数据字典功能,并隔离 ODBC 应用程序以使其不受基础系统表更改的影响. 变更数据捕获存储过程 用于启用.禁用.或报告变更数据捕获对象. 游标存储过程 用于实现游标变 ...

  9. SQL Server 数据库try catch 存储过程

    SQL Server 在生产环境中这样写存储过程的坑都避免了吗? 原文链接: http://www.cnblogs.com/chenmh/p/7856777.html 概述 最近因为业务的需求写了一段 ...

  10. SQL SERVER 2008破解加密存储过程(修正存储过程过长解密出来是空白的问题)

    SQLServer2005里使用with encryption选项创建的存储过程仍然和sqlserver2000里一样,都是使用XOR进行了的加密.和2000不一样的是,在2005的系统表syscom ...

随机推荐

  1. 第三方提权之serv-u提权

    文章比较简单,只是做一个科普.给一个好朋友的. 倘若口令更改了大家可以去serv-u的目录(默认路径:C:\Program Files\Serv-U\)找其配置文件(ServUDaemon.ini), ...

  2. 浅析Android中的消息机制&lpar;转&rpar;

    在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...

  3. 33条C&num;、&period;Net经典面试题目及答案

    33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...

  4. 《head first java 》读书笔记(四)

    Updated 2014/04/09 P518--P581 <数据结构> ArrayList不能排序:TreeSet以有序状态保持并可防止重复.HashMap可用成对的name/value ...

  5. QNetworkRequest 请求类

    QNetworkRequest Class Header:    #include <QNetworkRequest>qmake:     QT += networkSince:     ...

  6. mahout源码KMeansDriver分析之五CIMapper

    接上文重点分析map操作: Vector probabilities = classifier.classify(value.get());// 第一行 Vector selections = pol ...

  7. jQuery圣诞雪花

    <script type="text/javascript"> $(function(){ var d="<div class='y_snow'> ...

  8. jQuery应用操作之---复选框

    1.示例1: <form> 你最爱好的运动是? <input type="checkbox" id="CheckedAll"/>全选&l ...

  9. 使用openpyxl模块将Excel中的数据导入数据库

    这里将不介绍openpyxl模块的详细操作. 主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例. from openpyxl import load_workbook ...

  10. oc总结 --oc基础语法相关知识

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...