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
数据我已经测试过了,没问题
最后求赏~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)