问题:在sql server 08中写存储过程,if、set、else 它们各自的作用是什么

问题:在sql server 08中写存储过程,if、set、else 它们各自的作用是什么,第1张

就是逻辑判断用的。。

alter procedure [ work]

@L datetime

as

declare @X datetime ,@Y datetime

if @L ='19900101'

--如果@L='19900101'

begin

set @X = convert(varchar(10),getdate()-1,111)

--将@X赋值为当前日期的前一天

set @Y = convert(varchar(10),getdate(),111)

--将@Y赋值为当前日期

end

else

-如果@L不等于'19900101'

begin

set @X = convert(varchar(10),@L,111)

--将@X赋值为@L

set @Y = convert(varchar(10),@L + 1,111)

--将@X赋值为@L的后一天

end

首先

if…else

begin…end是SQL流程控制语句,作用是使得大部分业务逻辑可以在数据库层面进行。

语法:

begin

{sql语句或语句块}

end

(注意:begin

end要成对使用)

if

布尔表达式

{sql语句或语句块}

else

布尔表达式

{sql语句或语句块}

在没有流程控制语句的情况下,T-SQL语句是按照从上到下的顺序逐个执行.

使用流程控制语句可以让开发人员可以基于某些逻辑进行选择性的跳转,实现了类似高级语言的跳转结构.

--建立测试表

tableA

(type=“书籍”的不足100条),tableB

(type=“书籍”的多于100条)

create

table

tableA(id

int

identity(1,1),type

nvarchar(8))

create

table

tableB(id

int

identity(1,1),type

nvarchar(8))

go

--向表tableA循环插入测试语句

declare

@a

int

set

@a=0

while

(@a<120)

begin

if

@a<20

insert

into

tableA(type)values('报刊')--20本是'报刊'

else

if

@a<40

insert

into

tableA(type)values('光盘')--20本是'光盘'

else

if

@a<60

insert

into

tableA(type)values('漫画')--20本是'漫画'

else

if

@a<80

insert

into

tableA(type)values('书籍')--20本是'书籍'

else

if

@a<100

insert

into

tableA(type)values('其它')--20本是'其它'

else

insert

into

tableA(type)values('杂志')--20本是'杂志'

set

@a=@a+1

end

go

--向表tableB循环插入测试语句

declare

@b

int

set

@b=0

while

(@b<120)

begin

insert

into

tableB(type)values('书籍')--全部是'书籍'

set

@b=@b+1

end

go

--查看表tableA,tableB中的数据

select

*

from

tableA

select

*

from

tableB

/************************查看你要看的的数据************************/

--方法一,用

charindex

函数(当然函数里面的顺序可以根据自己要求改变)

select

top

100

*

from

tableA

order

by

charindex(type,'书籍报刊漫画杂志光盘其它')

--方法二,如果在不想用函数可以同一楼一样用下面的方法

select

top

100

*

from

tableA

order

by

case

when

type='书籍'

then

1

when

type='报刊'

then

2

else

3

end

--tableB表同上

--查看完后删除测试表

drop

table

tableA

drop

table

tableB

数据我已经测试过了,没问题

最后求赏~~


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9658527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存