• sql 存储过程


    存储过程(procedure)类似于C语言中的函数

    用来执行管理任务或应用复杂的业务规则

    存储过程可以带参数,也可以返回结果

    存储过程的优点

    执行速度更快

    允许模块化程序设计

    提高系统安全性

    减少网络流通量

    --定义存储过程的语法
        CREATE  PROC[EDURE]  存储过程名 
                  @参数1  数据类型 = 默认值 OUTPUT,
                  …… ,
                 @参数n  数据类型 = 默认值 OUTPUT
                 AS
                SQL语句
        GO

    存储过程例子 输入参数

    CREATE PROCEDURE proc_stu
      AS
        DECLARE @writtenAvg float,@labAvg numeric(6,2)
        SELECT @writtenAvg=AVG(written),
               @labAvg=AVG(lab)  FROM Exam
        print '笔试平均分:'+convert(varchar(6),@writtenAvg)  
        print '机试平均分:'+convert(varchar(6),@labAvg)
        IF (@writtenAvg>70 AND @labAvg>70)
           print '本校考试成绩:优秀'
        ELSE
           print '本校考试成绩:较差'
        print '--------------------------------------------------'
        print '           参加本次考试没有通过的学员:'
        SELECT stuName,stuInfo.stuNo,written,lab 
          FROM  stuInfo  INNER JOIN exam ON  
              stuInfo.stuNo=exam.stuNo
                     WHERE written<60 OR lab<60 
    GO

    EXEC proc_stu 60,55

    --或这样调用:

    EXEC proc_stu @labPass=55,@writtenPass=60

     

    EXECUTE(执行)语句用来调用存储过程 调用的语法

    EXEC 过程名 [参数]

    存储过程的参数分两种:

    输入参数 输出参数

    输入参数: 用于向存储过程传入值,类似C语言的按值传递;

    输出参数: 用于在调用存储过程后, 返回结果,类似C语言的 按引用传递;

    例子输出参数

    CREATE PROCEDURE proc_stu 
      @notpassSum int OUTPUT, 
      @writtenPass int=60,  
      @labPass int=60    
      AS
        print '--------------------------------------------------' 
        print '           参加本次考试没有通过的学员:'
        SELECT stuName,stuInfo.stuNo,written,lab  
        FROM  stuInfo INNER JOIN Exam 
        ON stuInfo.stuNo=exam.stuNo
        WHERE written<@writtenPass 
           OR lab<@labPass     
        SELECT @notpassSum=COUNT(stuNo) 
        FROM Exam
        WHERE written<@writtenPass 
           OR lab<@labPass    
    GO

    调用输出参数

    /*---调用存储过程----*/
    DECLARE @sum int   
    EXEC proc_stu @sum OUTPUT ,64  
    print '--------------------------------------------------'
    IF @sum>=3
      print '未通过人数:'+convert(varchar(5),@sum)+ '人, 
            超过%,及格分数线还应下调'
    ELSE
      print '未通过人数:'+convert(varchar(5),@sum)+ '人,
            已控制在%以下,及格分数线适中'
    GO

    修改存储过程

    ALTER PROCEDURE proc_stu …

    删除存储过程

    DROP PROCEDURE proc_stu

  • 相关阅读:
    TJU_SCS_软件测试_lab2_Selenium
    TJU_SCS_软件测试_homework3
    阅读《基于谱聚类的终端区飞行轨迹分析》笔记
    阅读《基于转弯点聚类的航空飞行轨迹分析》笔记
    TJU_SCS_软件测试_Lab1
    TJU_SCS_软件测试_homework2
    TJU_SCS_软件测试_homework1——《error impressed me most》
    TJU_SCS_C#学习笔记(10)
    TJU_SCS_C#学习笔记(9)
    TJU_SCS_C#学习笔记(8)
  • 原文地址:https://www.cnblogs.com/youchim/p/5563678.html
Copyright © 2020-2023  润新知