zoukankan      html  css  js  c++  java
  • SQL语句(十八_补充)——存储过程

    一、 变量

    1. 形式: @x (局部), @@x(全局)

    2. 定义: declare @x

    3. 赋值:Set @x = ?

    4. 作用:

    • 通用化

    • 存储在服务器

    5. 存储过程(预编译过的T-SQL语句)

    • 优点:

      • 完成复杂的运算
      • 保证数据的安全性和完整性
      • 效率高
      • 网络负载低
      • 实现企业规则 (模块化)
    Create  proc Pexa1  @SN  char(10)
    As
    begin
    select Sname
    From Student
    where sdept in
        (select sdept 
         From Student
         where Sname = @SN
        )
    end

    6. 存储过程的类型

    1. 系统存储过程

      存储过程的前缀: SP_xxx

    2. 创建存储过程的语法

      CREATE PROC 存储过程 形参表

      AS

      begin T-SQL 语句块 end

    3. 形参表

      @X1 类型1, @X2 类型2,......, @Y1 类型n Output

      ​ 输入形参 输出形参

      注: 不是所有变量都做性参表
    4. 实例

    Create Proc PEXA2 @x int
    AS
    begin
    Select Sno, Avg(Score)
    From SC
    group by Sno having AVG(Score) >= @x
    end
    
    --例2 
    Create Proc PEXA3 
    AS
    begin
    Select Sno
    From SC
    Where Sno Not in 
        (Select Sno
         From SC
         where Cno = '3'
        )
    end 

    4. 执行存储过程

      ​ EXEC PEXP3

      ​ EXEC PEXP1 '刘晨'

    5. 删除 Drop Proc 名

    6. 修改:

      ​ ALTER Proc p1

    7. 实例

    --在Student表中,创建指定学号的删除操作的存储过程
    Create Proc p2 
    AS
    begin
    delete from Student
    where Sno = @sn
    end
    
    
    --将student表中,sno的后一位是2的学生的学号、姓名分别赋值给 变量X, Y
    --问题转换: 查询Sno的后一位是2的学生的学号、姓名
    
    declare @x char(10), @Y varchar(9) --定义变量
    Select @X = sno, @Y = Sname        --为变量赋值
    From Student
    where right(sno, 1) = '2'          --倒数第二位 left(rihgt(sno, 2), 1)
    
    select @X, @Y                      --利用Select语句显示变量内容
    
    Select 语句功能推广
    1: 可同时为多个变量赋值, 其值来自数据库.
    2: 可让外部程序访问数据库

    7.命令

    --在屏幕上显示某个'借书证号'到期图书的'图书编号'(借书期限为30天)
    
    Declare @借书证号 char(10), @图书编号 char(6)
    SET @借书证号 = '00006' -- 输入变量初始化
    
    Select @图书编号 = books.图书编号
    From borrow, books
    where borrow.图书编号 = books.图书编号
          and 还书日期 IS NULL
          and datediff(day, 借书日期, getdate()) > 30
          and 借书证号 = @借书证号
    PRINT '超期图书是: ' + @图书编号
  • 相关阅读:
    Android Studio 常用快捷键以及设置
    GitHub windows客户端拉代码和提交代码
    Android Studio + gradle多渠道打包
    Android sdk 镜像服务器资源
    Rikka with Graph(联通图取边,暴力)
    Rikka with Chess(规律)
    Largest Submatrix(动态规划)
    City Game(动态规划)
    Largest Rectangle in a Histogram(最大矩形面积,动态规划思想)
    How many ways(记忆化搜索)
  • 原文地址:https://www.cnblogs.com/douzujun/p/6723238.html
Copyright © 2011-2022 走看看