没有什么,基本思路就是一个循环和Print配合使用,最基本的功夫
Declare @i Int
,@j Int
,@Out Varchar(5000)
Set @i=1
declare @sql varchar(8000)
set @sql = ''
select @i=1,@j=1
while @i<=9
begin
while @j<=@i
select @sql=@sql+rtrim(@i) + '*' + rtrim(@j) + '=' + rtrim(@i*@j)+' ',@j=@j+1
print @sql+char(13)
select @sql='',@j=1,@i=@i+1
end
,@j Int
,@Out Varchar(5000)
Set @i=1
declare @sql varchar(8000)
set @sql = ''
select @i=1,@j=1
while @i<=9
begin
while @j<=@i
select @sql=@sql+rtrim(@i) + '*' + rtrim(@j) + '=' + rtrim(@i*@j)+' ',@j=@j+1
print @sql+char(13)
select @sql='',@j=1,@i=@i+1
end
其中需要注意的是,select @sql='',@j=1,@i=@i+1可以等价于
set @sql=''
set @j=1
set @i=@i+1
都是对变量的设置,也就是如果用select的话可以写在一行用逗号隔开,而如果用set则要分行写
所以以上的例子也可以改成下面这个
Declare @i Int,@j Int
Set @i=1
declare @sql varchar(2000 )
set @sql = ''
set @i=1
set @j=1
while @i<=9
begin
while @j<=@i
begin
set @sql=@sql+rtrim(@i) + '*' + rtrim(@j) + '=' + rtrim(@i*@j)+'|'
set @j=@j+1
end
print @sql
set @sql=''
set @j=1
set @i=@i+1
print '--------------------------------------------------------------------'
end
Set @i=1
declare @sql varchar(2000 )
set @sql = ''
set @i=1
set @j=1
while @i<=9
begin
while @j<=@i
begin
set @sql=@sql+rtrim(@i) + '*' + rtrim(@j) + '=' + rtrim(@i*@j)+'|'
set @j=@j+1
end
print @sql
set @sql=''
set @j=1
set @i=@i+1
print '--------------------------------------------------------------------'
end