• 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  

      

      

  • 相关阅读:
    maven 笔记
    面试题53:在排序数组中查找数字
    面试题52:两个链表的第一个公共节点
    面试题51:数组中的逆序对
    面试题50_2:字符流中第一个只出现一次的字符
    面试题50:第一个只出现一次的字符
    面试题49:丑数
    面试题48:最长不含重复字符的连续子字符串
    面试题47:礼物的最大值
    面试题8:二叉树的下一个节点
  • 原文地址:https://www.cnblogs.com/xiaowangzi1987/p/6659741.html
Copyright © 2020-2023  润新知