|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先说DDL的分类。有一类DDL,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。明天在csdn上看到几位伴侣写的使用sql语句打印九九乘法表的体例,对照成心思。
办法一:
declare@xint
set@x=1
declare@yint
declare@cvarchar(8000)
while(@x<=9)
begin
select@y=1,@c=
while(@y<=@x)
begin
select@c=@c+cast(@yasvarchar)+*+cast(@xasvarchar)+=+cast(@x*@yasvarchar)+
set@y=@y+1
end
print@c+char(10)
set@x=@x+1
end
这个办法打印出来的效果以下:
1*1=1
1*2=22*2=4
1*3=32*3=63*3=9
1*4=42*4=83*4=124*4=16
1*5=52*5=103*5=154*5=205*5=25
1*6=62*6=123*6=184*6=245*6=306*6=36
1*7=72*7=143*7=214*7=285*7=356*7=427*7=49
1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64
1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
办法二:
select
max(casewhena>0then1*+a+=+ltrim(a*1)end)[1],
max(casewhena>1then2*+a+=+ltrim(a*2)end)[2],
max(casewhena>2then3*+a+=+ltrim(a*3)end)[3],
max(casewhena>3then4*+a+=+ltrim(a*4)end)[4],
max(casewhena>4then5*+a+=+ltrim(a*5)end)[5],
max(casewhena>5then6*+a+=+ltrim(a*6)end)[6],
max(casewhena>6then7*+a+=+ltrim(a*7)end)[7],
max(casewhena>7then8*+a+=+ltrim(a*8)end)[8],
max(casewhena>8then9*+a+=+ltrim(a*9)end)[9]
from
(
selectltrim(number)afrommaster..spt_values
wheretype=pandnumberbetween1and9
)tgroupbya
这个sql查询的了局为:
1*1=1 NULL NULL NULL NULL NULL NULL NULL NULL
1*2=2 2*2=4 NULL NULL NULL NULL NULL NULL NULL
1*3=3 2*3=6 3*3=9 NULL NULL NULL NULL NULL NULL
1*4=4 2*4=8 3*4=12 4*4=16 NULL NULL NULL NULL NULL
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 NULL NULL NULL NULL
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 NULL NULL NULL
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 NULL NULL
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 NULL
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
使用C#完成能够参考本站:使用C#完成九九乘法表有了数据以后,我们就要想一个比较统一的方法来闪回。上面我们说了对于DML操作,可以通过反向执行所有逆操作来实现,对于语句里面的DDL,只能直接跳过。原因是一个DDL不一定有直接的逆操作。 |
|