SqlServer和Oracle中一些常用的sql语句5 流程控制语句
--在sql语句中 begin...end 用来设定一个程序块 相关于c#中的{}
declare @yz real,@w int --声明变量
set @w=120 --为变量赋值
if @w<=100 --if条件语句
begin --Begin程序块
set @yz=@w*0.12 --为变量赋值
end
else
begin
set @yz=100*0.12+(@w-100)*0.05
end
/*输出邮件的重量和邮费*/
print '邮件的重量是:'+cast(@w as varchar(20))+'克'
print '邮费是:'+cast(@yz as varchar(20))+'元' -- if-else在数据库查询的应用
declare @x int
set @x =1000
if @x>950
begin
set @x=@x+1000
select * from 职工 where 工资>@x
end
else
begin
set @x=@x-50
select * from 仓库 where 面积<@x
END -- if...else if ...多条件判断
declare @hyuser varchar(50) ,@hypwd varchar(50),@msg varchar(50)
select @hyuser='liping' , @hypwd='111' if @hyuser='hystu1'
begin
if @hypwd='111'
set @msg='用户名与密码正确,成功登录!'
else
set @msg='密码不正确,请重新输入!'
end
else if @hyuser='hystu2'
begin
if @hypwd='222'
set @msg='用户名与密码正确,成功登录!'
else
set @msg='密码不正确,请重新输入!'
end
else if @hyuser='hystu3'
begin
if @hypwd='333'
set @msg='用户名与密码正确,成功登录!'
else
set @msg='密码不正确,请重新输入!'
end
else
set @msg='用户名不正确,请重新输入!'
print @msg --if...else...登陆判断
declare @hyuser varchar(50) ,@hypwd varchar(50),@msg varchar(50)
select @hyuser='stu1' , @hypwd='111'
if exists(select * from hyuser where hyname=@hyuser )
begin
if exists(select * from hyuser where hyname=@hyuser and hypwd=@hypwd )
set @msg='用户名与密码都正确,成功登录!'
else
set @msg='密码不正确,请重新输入!'
end
else
set @msg='用户名不正确,请得新输入!'
print @msg --case when 多条件判断
declare @cj float,@str varchar(60)
set @cj=90
set @str=
case
when @cj>100 or @cj<0 then '你输入的成绩不对,成绩应在0-100之间'
when @cj>=60 and @cj<70 then '及格'
when @cj>=70 and @cj<80 then '中等'
when @cj>=80 and @cj<90 then '优良'
when @cj>=90 and @cj<=100 then '优秀'
else '不及格'
end
print '该学生的成绩评语:' + @str --查询不同仓库的平均工资
select * ,
不同仓库的平均工资 =
case
when 仓库号='wh1' then (select avg(工资) from 职工 where 仓库号='wh1')
when 仓库号='wh2' then (select avg(工资) from 职工 where 仓库号='wh2')
when 仓库号='wh3' then (select avg(工资) from 职工 where 仓库号='wh3')
when 仓库号='wh4' then (select avg(工资) from 职工 where 仓库号='wh4')
end
from 职工 --利用循环语句 while计算1-120相加总和
declare @x int, @sum int --声明变量
select @x=0,@sum=0 --为变量赋值
while @x<=120 --While循环语句
begin --程序块的开始
set @sum=@sum+@x
set @x=@x+1
end --程序块的结构
--利用print进行输出
print '从1加120之和是:'+ cast(@sum as varchar(50)) --跳转语句 break
--求从1加到10的和 但如果求得的和大于30 则跳出
declare @x int, @sum int
select @x=0,@sum=0
while @x<=10
begin
set @x=@x+1
set @sum=@sum+@x
if @sum>30
break
end
waitfor delay '00:00:01'
print '等1秒后输出'
print '最后结果是:'+ cast(@sum as varchar(50)) --跳转语句 continue
--求1-120之间所有偶数的和
declare @x int, @sum int
select @x=0,@sum=0
while @x<=120
begin
set @x=@x+1
if @x%2=1
continue
set @sum=@sum+@x
end
print '从1加120所有偶数之和是:'+ cast(@sum as varchar(50)) --跳转语句 goto
--利用goto求1-100之间的和
declare @x int,@sum int
set @x=0
set @sum=0
bz:
set @x=@x+1
set @sum=@sum+@x
while @x<100 goto bz
print '利用Goto语名求从1加到100的和:'+ cast(@sum as varchar(50)) --跳转语句 return
--创建自定义函数 计算奖金
create function myfun(@x int) returns int
as
begin
declare @y int
set @y=@x*0.15
return @y
END select *,dbo.myfun(工资) as 奖金 from 职工
SqlServer和Oracle中一些常用的sql语句5 流程控制语句的更多相关文章
- SqlServer和Oracle中一些常用的sql语句9 SQL优化
--SQL查询优化 尽量避免使用or,not,distinct运算符,简化连接条件 /*Or运算符*/ use db_business go select * from 仓库 where 城市='北京 ...
- SqlServer和Oracle中一些常用的sql语句10 特殊应用
--482, ORACLE / SQL SERVER --订购数量超过平均值的书籍 WITH Orders_Book AS ( SELECT Book_Name, SUM(Qty) Book_Qty ...
- SqlServer和Oracle中一些常用的sql语句3 行列转换
--217, SQL SERVER SELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009- ...
- SqlServer和Oracle中一些常用的sql语句6 存储过程
--不带参数的存储过程 CREATE procedure proc_sql1 as begin declare @i int set @i=0 while @i<26 begin print c ...
- SqlServer和Oracle中一些常用的sql语句7 游标
declare db_cursor4 scroll cursor for select * from 供应商 --声明游标 open db_cursor4 --打开游标 fetch first fro ...
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
--创建和执行事后触发器 --更新仓库备份表中记录时自动创建数据表且插入三条记录 create trigger db_trigger1 on 仓库备份 for update as begin if E ...
- SqlServer和Oracle中一些常用的sql语句4 局部/全局变量
--把wh1仓库号中姓名含有"平"字的职工工资在原来的基础上加288 update 职工备份 set 工资=工资+288 where 仓库号='wh1' and 姓名 like ' ...
- SqlServer 获取字符串中小写字母的sql语句
SQL字符串截取(SubString) 作用:返回第一个参数中从第二个参数指定的位置开始.第三个参数指定的长度的子字符串. 有时候我们会截取字符串中的一些特殊想要的东西,大小写字母.模号.汉字.数字等 ...
- SqlServer 查看备份文件中逻辑文件信息的Sql语句
RESTORE FILELISTONLY FROM DISK = 'D:\All\DataBase\(2013-12-18)-1.bak' 用来查看备份文件中的逻辑文件信息. 相关信息:SqlServ ...
随机推荐
- Spark 贝叶斯分类算法
一.贝叶斯定理数学基础 我们都知道条件概率的数学公式形式为 即B发生的条件下A发生的概率等于A和B同时发生的概率除以B发生的概率. 根据此公式变换,得到贝叶斯公式: 即贝叶斯定律是关于随机事件A和B ...
- vue中数据双向绑定的实现原理
vue中最常见的属v-model这个数据双向绑定了,很好奇它是如何实现的呢?尝试着用原生的JS去实现一下. 首先大致学习了解下Object.defineProperty()这个东东吧! * Objec ...
- (转)C语言malloc()与free()的使用
如何使用 malloc 函数 本文为转载内容,原文地址请点击 不要莫名其妙,其实上面这段小小的对话,就是malloc的使用过程.malloc是一个函数,专门用来从堆上分配内存.使用malloc函数需要 ...
- 命令行利用KVM创建虚拟机
一,实验环境 OS:CENTOS6.5 X86_64 二,KVM宿主环境配置 1.cat /proc/cpuinfo | egrep 'vmx|svm' //查看是否支持虚拟技术 2.安装KVM相关 ...
- 团队作业8----第二次项目冲刺(Beta阶段) 第四天
BETA阶段冲刺第四天 1.小会议ing 2.每个人的工作 (1)昨天已完成的工作 1.修改了学生上传的方式: 2.完善了学生和老师修改的代码: (2) 今天计划完成的工作 (3) 工作中遇到的困难: ...
- 个人作业2————英语学习APP的案例分析
必应词典案例分析 第一部分 调研, 评测 1.下载并使用 第一次使用必应词典,安装完打开便是这样的界面,第一印象还行,界面平平无奇,比较简洁,上面分四个模块,这样一眼看去感觉功能比较单一 使用了下例句 ...
- 201521123095 《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 Q1.finally 题目4-2 1.1 截图你的提交结果( ...
- 多线程面试题系列(6):经典线程同步 事件Event
上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的"线程所有权"特性所以关键段只能用于线程的互斥而不能用于同步.本篇介绍用事件Event来尝试解决这个线程同步问题.首先 ...
- [python学习笔记] py2exe 打包
遇坑 之前经过折腾,pyinstaller打包文件可以在别的windows7上运行.但是,mfk, 客户说是xp系统.崩溃 使用pyinstaller各种折腾,打包出来的依然是不是有效的win32程序 ...
- 循环语句for,while,until,select
循环 *循环执行 将某代码段重复运行多次 重复运行多少次: 循环次数事先已知 循环次数事先未知 有进入条件和退出条件 *常见的循环语句有for,while,until for循环 for 变量名 n ...