首页 > 代码库 > 数据库存储过程及变量的使用
数据库存储过程及变量的使用
-定义变量 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
数据库存储过程及变量的使用