SQL语句(十八_补充)——存储过程
一、 变量
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. 存储过程的类型
系统存储过程
存储过程的前缀: SP_xxx
创建存储过程的语法
CREATE PROC 存储过程 形参表
AS
begin T-SQL 语句块 end
形参表
@X1 类型1, @X2 类型2,......, @Y1 类型n Output
输入形参 输出形参
注: 不是所有变量都做性参表
实例
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语句(十八_补充)——存储过程的更多相关文章
- 用sql语句导出oracle中的存储过程和函数
用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' repl ...
- MySQL之唯一索引、外键的变种、SQL语句数据行操作补充
0.唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样 1.外键的变种 a. 用户表和部门表 用户: 1 alex 1 ...
- Mysql常用sql语句(八)- where 条件查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- Jmeter(四十八)_动态线程分析HTML测试报告
概述 jmeterGUI模式下,性能测试的结果往往误差很大,因为GUI本身就会消耗一部分资源.所以我们常常用命令行去跑性能脚本,得出结果 同时,jmeter在命令行下还可以生成多维度的测试报告,里面包 ...
- 必须会的SQL语句(八)数据库的完整性约束
实体完整性 1.建表时定义主键 Create table 表名 ( Sno int identity(1,1), Sname nvarchar(20), ...
- Python笔记(二十八)_魔法方法_迭代器
迭代器用于遍历容器中的数据,但它不是容器,它是一个实现了__next__方法的对象 与迭代器相关的内置函数: iter(): 将一个对象转换成一个迭代器 next(): 访问迭代器中的下一个变量,直到 ...
- Python爬虫(十八)_多线程糗事百科案例
多线程糗事百科案例 案例要求参考上一个糗事百科单进程案例:http://www.cnblogs.com/miqi1992/p/8081929.html Queue(队列对象) Queue是python ...
- SQL语句(八)按条件查询
SELECT * FROM student SELECT sclass, snumb, sname FROM student --物理班有哪些同学 --年龄小于20岁的有哪些同学? --定价在30元以 ...
- [b0033] python 归纳 (十八)_队列Queue在多线程中使用(二)
# -*- coding: UTF-8 -*- """ 多线程同时读队列 使用 join(), task_done() 逻辑: 3个子线程并发 从有6个数据的队列中取数据 ...
随机推荐
- Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks dp+矩阵加速
题目链接: http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test2 se ...
- BETA-2
前言 我们居然又冲刺了·二 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 过去两天完成了哪些任务 了解OpenCV下的视频参数及其调用方法 初步编码 接下来的计划 文档工作 速 ...
- Gradle入门(4):依赖管理
在现实生活中,要创造一个没有任何外部依赖的应用程序并非不可能,但也是极具挑战的.这也是为什么依赖管理对于每个软件项目都是至关重要的一部分. 这篇教程主要讲述如何使用Gradle管理我们项目的依赖,我们 ...
- 浅谈iOS内存管理机制
iOS内存管理机制的原理是引用计数,引用计数简单来说就是统计一块内存的所有权,当这块内存被创建出来的时候,它的引用计数从0增加到1,表示有一个对象或指针持有这块内存,拥有这块内存的所有权,如果这时候有 ...
- [转帖]PCI-E的部分知识
PCI-E PCI-E全称是PCI Express,是新一代的总线接口.采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线 ...
- vue 组件 组件2
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>T ...
- 如何修改antd中表格的表头样式和奇偶行颜色交替
在做antd表格时通常会用到table组件,但是table的表头时给定的,那么怎么修改表头的颜色呢? 这里用的时less的写法,在全局环境中写,所有的table表头都会变成自己定义的颜色 定义好表头的 ...
- 关于nginx的一点记录
(1) 安装nginx官网下载:http://nginx.org下载适合Windows的安装包,是一个压缩包,直接解压就可以了. (2) 启动nginx有三种方式启动:a. 双击nginx.exe图标 ...
- Stack Overflow上关于Java Collections的几个常见问题
下面列出Stack Overflow上最常见的几个关于Java Collections的问题并给出答案. 1. 什么时候用LinkedList,什么时候用ArrayList? ArrayList是使用 ...
- java的finally用法
finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下. 之前在写爬虫的时候数据 ...