SQL高级语言

今天学习了SQL高级语言

触发器、存储过程、视图等

--存贮过程格式

--create procedure name --@parms.... --as --begin

--end

---execute name 参数1  参数2

    

----无参数的存贮过程执行

create procedure proc2

as

begin

select * from 职工 where 工资>2000

end

execute proc2

 

 

--有参数的存贮过程

create procedure proc4 @x1 int,@x2 int,@x3 int

as

begin

declare @max int if @x1>@x2  

   set @max=@x1

else

    set @max=@x2

if  @x3>@max

  set @max=@x3

 print ‘3个数字中的最大值是‘+cast(@max as varchar(50)) end

execute proc4 15,18,39

视图

--视图

create view v1
as
select 仓库号,城市,面积 from 仓库

create view v2
as
select 姓名,工资 from 职工 where 工资>1800


create view v3
as
select 仓库.仓库号,城市,面积,创建时间,姓名,性别,工资 from 仓库,职工 where 仓库.仓库号=职工.仓库号

alter view v2
as
select 仓库.仓库号,城市,面积 from 仓库


drop view v3

create view test
as
select * from 仓库


select * from test

update test set 面积=面积+88 where 仓库号=wh1

delete test where 仓库号=wh1

触发器

--触发器是一种特殊的存贮过程,他就相当于c#中的事件触发器主要是通过事件触发而被执行的
--create trigger 触发器名称 on 表 for insert[update,delete] as
-- begin
--程序块
--end


create trigger rockyR on 仓库 for update
as
begin
   
   insert into 仓库(仓库号,城市,面积,创建时间) values(wh01,郑州,1800,2014-12-12),(wh02,北京,1700,2014-12-13),(wh03,上海,1600,2014-12-15)
end

update 仓库 set 面积=面积-10 where 仓库号=wh2

 

create trigger student_trigger
 on class
 after update
 as
 declare @count_student int
 select @count_student=@@rowcount
 print 一共修改了+char(48+@count_student)+
 return
 go
 
 
 use db_buiness
 go
 update class set tClassName=14网普 where tClassId=10
 go
 exec sp_help student_trigger
 
 exec sp_helptext student_trigger

循环语句

declare @cj float,@str varchar(60)
set @cj=90
set @str=
case 
    when @cj>100 or  @cj<0 then ‘您输入的成绩不对,成绩应该在0-100之间‘
    when @cj>=60 and  @cj<70 then ‘及格‘
    when @cj>=70 and  @cj<80 then ‘中等‘
    when @cj>=80 and  @cj<90 then  ‘良好‘
    when @cj>=90 and  @cj<=100 then ‘优秀‘
    else 
    ‘不及格‘
 end
 
 print ‘该学生的成绩评语是‘+@str 
 
 
 --case [表达式]
 --   when  条件表达式1 then  结果1
 --   when  条件表达式2  then  结果2
 --  ........
 --  else
 --    结果表达式n
 --  end

 

--while 条件表达式
  -- begin
  --命令行或程序
  -- end
  
  declare @x int,@sum int
  select @x=0,@sum=0
 while @x<=100
  begin
  set @sum=@sum+@x
  set @x=@x+1
   end
   
 print ‘1-100之间的和‘+cast(@sum as varchar(50))

 continue

--continue
   
  declare @x int,@sum int
  select @x=0,@sum=0
  while @x<100
    begin
    set @x=@x+1
      if @x%2=1
      continue
    set @sum=@sum+@x
       
    end
    
    print ‘偶数和‘+cast(@sum as varchar(50))

 break

--break
   declare @x int,@sum int
   select @x=0,@sum=0
   while @x<=10
   begin
   set @x=@x+1
   set @sum=@sum+@x
   if @sum>30
   break
   end
   
   print ‘结果‘+cast(@sum as varchar(50))

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。