print '批处理开始...';
select * from TB_STUDENTS;
select * from TB_MAJORS;
print '批处理结束';
go
select * from tb_students;
print '定义变量的批处理例子';
declare @name nvarchar(20);
declare @birthdate datetime;
select @name=STU_NAME, @birthdate=stu_birth_date from TB_STUDENTS where stu_id='20080102';
if (@name is null)
begin
print '没有找到符合条件的记录';
end
else
begin
declare @retval nvarchar(200);
set @retval = '姓名: ' + @name + ' 生日:' + convert(nvarchar(20), @birthdate, 101);
print @retval; --convert函数这里把日期转化成MM/dd/yyyy格式的字符串
end
go
print '定义变量批处理的例子'
declare @name nvarchar(20);
declare @birthdate datetime;
select @name=STU_NAME,@birthdate=stu_birth_date from TB_STUDENTS where stu_id='20080102';
if(@name is null)
begin
print '没有找到符合条件的记录'
end
else
begin
declare @retval nvarchar(200);
set @retval = '姓名:' + @name + '生日:' + convert(nvarchar(20),@birthdate,101);
print @retval;
end
print 'while 循环的例子:打印出 100以内的质数'
declare @result nvarchar(500);
set @result = '2,3';
declare @i int; --从5开始至99的奇数
declare @j int; --从3开始至i的奇数
declare @zhi bit; --标志i是否质数
set @i=5;
while @i<100
begin
set @j = 3;
set @zhi=1;
while @j < @i
begin
if((@i % @j) = 0) --i对j取余数,如果是0,则能够整除,i不是质数
begin
set @zhi = 0;
break;
end
set @j=@j+2; --j始终是奇数
end
if(@zhi = 1)
begin
set @result = @result + ', ' + convert(nvarchar(4),@i);
end
set @i=@i+2; --i始终是奇数
end
print @result;
go
print 0
--验证哥德巴赫猜想对于10000内的偶数是否成立
declare @i int;
declare @j int;
declare @m int;
declare @n int;
declare @zhi bit;
set @i = 6
while @i <= 10000
begin
set @j = 3;
while @j <= (@i/2)
begin
set @m = 3;
set @zhi=1;
--判断j是否质数
while @m <= sqrt(@j)
begin
if((@j % @m) = 0) --j对m取余数,如果是0,则能够整除,j不是质数
begin
set @zhi = 0;
break;
end
set @m=@m+2; --j始终是奇数
end
--如果j是质数则判断 i-j是否质数
if(@zhi = 1)
begin
set @n = @i - @j;
set @m = 3;
while @m <= sqrt(@n)
begin
if((@n % @m) = 0) --n对m取余数,如果是0,则能够整除,n不是质数
begin
set @zhi = 0;
break;
end
set @m=@m+2; --j始终是奇数
end
--如果j和i-j都是质数,则输出j和i-j的值
if(@zhi = 1)
begin
print convert(nvarchar(8),@i) + '=' + convert(nvarchar(8),@j) + '+' + convert(nvarchar(8),@n);
break;
end
end
set @j = @j + 2;
end
set @i = @i + 2;
end
print'检验哥德巴赫猜想(6以上的偶数都能写成两个质数及奇数之和的形式)';
declare @i int;
declare @j int;
declare @m int;
declare @n int;
declare @h int;
declare @zhi1 bit;
declare @zhi2 bit;
set @i=6;
while (@i<100)
begin
set @j=3;
while(@j<@i/2)
begin
set @m=@i-@j;
set @n=@j-1;
set @zhi1=1;
while (@n>1)
begin
if(@j%@n=0)
begin
set @zhi1=0;
break;
end
set @n=@n-1;
end
if(@zhi1=1)
begin
set @h=@m-1;
set @zhi2=1;
while (@h>1)
begin
if(@m%@h=0)
begin
set @zhi2=0;
break;
end
set @h=@h-1;
end
if(@zhi2=1)
begin
print'偶数为:'+convert(nvarchar(8),@i)+'='+convert(nvarchar(8),@j)+'+'+convert(nvarchar(8),@m);
end
end
set @j=@j+2;
end
set @i=@i+2;
end