一、 变量

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

2. 定义: declare @x

3. 赋值:Set @x = ?

4. 作用:

  • 通用化

  • 存储在服务器

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

  • 优点:

    • 完成复杂的运算
    • 保证数据的安全性和完整性
    • 效率高
    • 网络负载低
    • 实现企业规则 (模块化)
Create  proc Pexa1  @SN  char()
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 = ''
)
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(), @Y varchar() --定义变量
Select @X = sno, @Y = Sname --为变量赋值
From Student
where right(sno, ) = '' --倒数第二位 left(rihgt(sno, 2), 1) select @X, @Y --利用Select语句显示变量内容 Select 语句功能推广
: 可同时为多个变量赋值, 其值来自数据库.
: 可让外部程序访问数据库

7.命令

--在屏幕上显示某个'借书证号'到期图书的'图书编号'(借书期限为30天)

Declare @借书证号 char(), @图书编号 char()
SET @借书证号 = '' -- 输入变量初始化 Select @图书编号 = books.图书编号
From borrow, books
where borrow.图书编号 = books.图书编号
and 还书日期 IS NULL
and datediff(day, 借书日期, getdate()) >
and 借书证号 = @借书证号
PRINT '超期图书是: ' + @图书编号

SQL语句(十八_补充)——存储过程的更多相关文章

  1. 用sql语句导出oracle中的存储过程和函数

    用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' repl ...

  2. MySQL之唯一索引、外键的变种、SQL语句数据行操作补充

    0.唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样  1.外键的变种 a. 用户表和部门表 用户: 1 alex 1 ...

  3. Mysql常用sql语句(八)- where 条件查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  4. Jmeter(四十八)_动态线程分析HTML测试报告

    概述 jmeterGUI模式下,性能测试的结果往往误差很大,因为GUI本身就会消耗一部分资源.所以我们常常用命令行去跑性能脚本,得出结果 同时,jmeter在命令行下还可以生成多维度的测试报告,里面包 ...

  5. 必须会的SQL语句(八)数据库的完整性约束

    实体完整性 1.建表时定义主键   Create table 表名    (         Sno int identity(1,1),         Sname nvarchar(20),    ...

  6. Python笔记(二十八)_魔法方法_迭代器

    迭代器用于遍历容器中的数据,但它不是容器,它是一个实现了__next__方法的对象 与迭代器相关的内置函数: iter(): 将一个对象转换成一个迭代器 next(): 访问迭代器中的下一个变量,直到 ...

  7. Python爬虫(十八)_多线程糗事百科案例

    多线程糗事百科案例 案例要求参考上一个糗事百科单进程案例:http://www.cnblogs.com/miqi1992/p/8081929.html Queue(队列对象) Queue是python ...

  8. SQL语句(八)按条件查询

    SELECT * FROM student SELECT sclass, snumb, sname FROM student --物理班有哪些同学 --年龄小于20岁的有哪些同学? --定价在30元以 ...

  9. [b0033] python 归纳 (十八)_队列Queue在多线程中使用(二)

    # -*- coding: UTF-8 -*- """ 多线程同时读队列 使用 join(), task_done() 逻辑: 3个子线程并发 从有6个数据的队列中取数据 ...

随机推荐

  1. 读《我是IT小小鸟》有感

    我是一只IT小小鸟,我与IT结缘.书中是作者对个人经历与经验在IT下的体会,却给了我们很好的借鉴. IT这门行业,不仅仅再局限于如我们高中老师教学所要求的内容.IT更加开放,可以通过GitHub.CS ...

  2. 第一个spring冲刺第二天

    讨论成员:王俊凯.罗凯杰.王逸辉.马志磊 地点:宿舍 话题:讨论关于安卓的控件的应用和如何调用 选题:四则运算 方向:更加实用的计算器功能,功能更加实用并且简单,没有太多的繁琐操作,可以的话会加上些趣 ...

  3. Java自学基础用法

    在慕课上面简单学习了一下java语言的用法 简单的用法总结记录一下. 代码(学习输入,输出): package hello; import java.util.Scanner; public clas ...

  4. 12_Java面向对象_第12天(构造方法、this、super)_讲义

    今日内容介绍 1.构造方法 2.this关键字 3.super关键字 4.综合案例 01构造方法引入 A:构造方法的引入 在开发中经常需要在创建对象的同时明确对象的属性值, 比如员工入职公司就要明确他 ...

  5. WPF string,color,brush之间的转换

    String转换成Color string-"ffffff" Color color = (Color)ColorConverter.ConvertFromString(strin ...

  6. js中的extend,可实现浅拷贝深拷贝

    js中的extend   1.    JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为 ...

  7. json数据进行格式化

    <?php /** Json数据格式化 * @param Mixed $data 数据 * @param String $indent 缩进字符,默认4个空格 * @return JSON */ ...

  8. [转帖]22个必须学习的Linux安全命令

    22个必须学习的Linux安全命令 http://os.51cto.com/art/201808/581401.htm Linux系统的安全性涉及很多方面,从设置帐户到确保用户合法,限制比完成工作所需 ...

  9. java 常见的异常大集合

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  10. mybaits入门(含实例教程和源码) http://blog.csdn.net/u013142781/article/details/50388204

    前言:mybatis是一个非常优秀的存储过程和高级映射的优秀持久层框架.大大简化了,数据库操作中的常用操作.下面将介绍mybatis的一些概念和在eclipse上的实际项目搭建使用. 一.mybati ...