文档章节

SqlServer和Oracle中一些常用的sql语句5 流程控制语句

深圳大道
 深圳大道
发布于 2016/12/29 15:34
字数 920
阅读 3
收藏 0
--在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 职工

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/9160309

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/08/22
108
0
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/06/11
80
0
使用 Informatica 做将字符串转换成日期

数据源为 SQLServer 数据库,且源字段 varchar 类型。需要抽取到 Oracle 数据库中,并且转换为 date 类型。 由于源表和目标表是两种不同的数据库,且数据类型不同,所以无法在源表限定转换器...

DreamOver
2018/06/08
0
0
基于AEAI ESB的处理大字段

1.背景 数据迁移中大字段一直是个比较头疼的问题,一旦大字段中值大于32K的话就无法用sql语句来实现插入和更新。通用的解决办法一般有两种:存储过程和JDBC。下面主要总结下基于AEAI ESB用J...

数通畅联
2015/01/22
182
0
OpenJWeb 1.8数据库管理工具功能说明

QQ:29803446 msn:baozhengw999@hotmail.com email:baozhengw@163.com 联系人:王先生 OpenJWeb 1.8数据库管理工具功能说明 由于使用sqlserver 的DTS跨数据库复制功能经常失败,所以openjweb开...

迷途d书童
2012/03/09
75
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
13分钟前
2
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
14分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
18分钟前
2
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
18分钟前
2
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
26分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部