SQL---存储过程---存储过程编写案例

存储过程的创建和调用演示

1.不带参数的存储过程的创建

create procedure PRO_With_No_Param
    as 
    Begin --begin可省略
        select * from sc
    end  --end可省略
--调用
    exec PRO_With_No_Param

2.带参数的存储过程的创建

create procedure PRO_With_Param
  (
      @Sno char(5),
      @Cno char(1)
  )
     as
     Begin
         select * from SC where Sno=@Sno and Cno=@Cno
     end
--调用
    exec PRO_With_Param ]09002','2'

3.带一个参数的多表联合查询

create procedure PRO_Query_Double_Table
  (
     @Sname_IN char(6)
  )
    as 
    begin
        select Sname,Ssex,Sage,Cno,Grade from STU,SCTU where STU.Sno=SCTU.sno and Sname=@Sname_IN
--调用
   exec PRO_Query_Double_Table '222'

4.创建一个插入表的存储过程

create procedure PRO_Insert
   (
      @Sno_IN char(5),
      @Cno_IN char(5),
      @Grade_IN int
   )
      as 
      begin 
          insert into SC (Sno,Cno,Grage) values (@Sno_IN,@Cno_IN,@Grade_IN)
      end
--调用
   exec PRO_Insert '0900','2',2

5.默认参数的存储过程

create procedure PROC_With_Default_Param
  (
      @Sno_IN char(5)='0900',
      @Cno_IN char(1)='2'
  )
  as
  begin
      select * from SC where SC where Sno=@Sno_IN and Cno=@Cno_IN
  end
--调用:这种存储过程有三种方式进行调用1.全部使用默认值,2.部分使用默认值。3.全部使用输入值
   exec PROC_With_Default_Param 
   exec PROC_With_Default_Param '09'
   exec PROC_With_Default_Param '09','1'

6.使用带输出参数的存储过程

create procedure PROC_With_Out_Param
  (
     @Grade_OUT int output
  )
  as
  begin
      select @Grade_OUT=Grade from SC where Sno='0900' and Cno='2'
  end

  Declare @Grade_Result int --声明一个变量来存储输出参数输出的值
  exec PROC_With_Out_Param @Grade_OUT=@Grade_Result output
  print @Grade_Result
--写控制逻辑
  if @Grade_Result>=90
    print 'a'
  elseif (@Grade_Result<90 and @Grade_Result>85)
    print '2'
  else
    print '22'

7.使用一个值来保存执行后的状态

create procedure PROC_With_Status_Value
   (
       @Sno_IN char(5)
   )
   as 
   begin 
       select * from SC where Sno=@Sno_IN
   end
--使用记录状态的执行
   declare @status int 
   exec @status=PROC_With_Status_Value @Sno_IN='00'
   print @status

   if(@status=0)
     print '1'
   else
     print '0'

8.输入输出参数的存储过程

create procedure PROC_With_In_And_Out_Param
    (
        @Sno_IN char(5),
        @Grade_Out int output
    )

    as 
    begin
        select @Grade_Out=Grade from SC where Sno=@Sno_IN 
    end
--执行存储过程
    declare @Grade_Result int 
    exec PROC_With_In_And_Out_Param @Sno_IN='0900',@Grade_Out=@Grade_Reault output
    print @Grade_Result  

  

  

posted @ 2017-04-02 20:39  小王子的博客  阅读(1075)  评论(0编辑  收藏  举报