首页 > 代码库 > 数据库存储过程及变量的使用

数据库存储过程及变量的使用

 

-定义变量 declare @sum int --变量赋值 set @sum=1 select @sum=3 --变量使用 print @sum declare @string varchar(20) set @string=‘abcdef‘ set @string=substring(@string,3,1) print @string --全局变量 print @@error print @@rowcount -- declare @pi decimal(18,2),@r decimal(18,2),@area decimal(18,2) set @pi=3.14 set @r=2 set @area=@pi*@r*@r print @area

--语句 declare @k int set @k=7 if @k>0 begin  if @k>=10  begin   print‘这是一个两位数‘  end  else  begin   print ‘这是一个一位数‘  end end else if @k=0 begin  print ‘数为0‘ end else begin  print ‘这是一个负数‘ end

---判断是否闰年 declare @year int set @year=2200 if @year%4=0 and @year%100!=0 begin  print ‘是闰年‘ end else if @year%100=0 and @year%400=0 begin  print ‘是闰年‘ end else begin  print ‘不是闰年‘ end -----判断是否是一元二次方程 declare @a int,@b int,@c int,@x1 decimal(18,2),@x2 decimal(18,2) set @a=1 set @b=5 set @c=4 if @a=0 begin  print ‘不是一元二次方程,因为a=0‘ end else begin  declare @sqrt decimal(18,2)  set @sqrt=@b*@b-4*@a*@c  if @sqrt<0  begin   print ‘此方程无解,因为sqrt小于0‘  end   else if @sqrt=0  begin   set @x1 = (-@b+SQRT(@sqrt))/(2*@a)   print ‘有两个相等的根,结果为‘+cast(@x1 as varchar(20))  end  else  begin   set @x1 = (-@b+SQRT(@sqrt))/(2*@a)   set @x2 = (-@b-SQRT(@sqrt))/(2*@a)   print ‘有两个不相等的根,结果为x1=‘+cast(@x1 as varchar(20))+‘x2=‘+cast(@x2 as varchar(20))  end end

---存储过程 alter proc ChaXun as begin  select *from Score end go --执行 exec chaxun --删除 drop proc chaxun

--输入参数的存储过程 alter proc jiayibai @shuru int, @canshu int as begin  print @shuru+@canshu end go exec jiayibai 10,120 --是否闰年 create proc isRunNian @year int as begin  if @year%4=0 and @year%100!=0  begin   print ‘是闰年‘  end  else if @year%100=0 and @year%400=0  begin   print ‘是闰年‘  end  else  begin   print ‘不是闰年‘  end end go declare @jieguo int exec @jieguo=isRunNian 2100 print @jieguo

----一元二次方程存储过程 alter proc yiyuanerci @a int, @b int, @c int as begin  if @a=0  begin   --print ‘不是一元二次方程‘   return 1  end  else  begin   declare @sqrt decimal(18,2)   set @sqrt = @b*@b-4*@a*@c   if @sqrt>0   begin    --print ‘两个不同的根‘    return 2   end   else if @sqrt=0   begin    --print ‘两个相同的根‘    return 3   end   else   begin    --print ‘无解‘    return 4   end  end end go declare @fanhui int exec @fanhui = yiyuanerci 0,4,3 if @fanhui=1 print ‘请仔细阅读一元二次方程的构造规则‘ --out输出参数 alter proc outzhi @shuru int, @jiashi int output, @jiaershi int output as begin  set @jiashi=@shuru+10  set @jiaershi=@shuru+20  return 1 end go declare @shuchu1 int,@shuchu2 int,@return int exec @return=outzhi 15,@shuchu1 output,@shuchu2 output print @shuchu1 print @shuchu2 print @return

 

数据库存储过程及变量的使用