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个数据的队列中取数据 ...
随机推荐
- 读《我是IT小小鸟》有感
我是一只IT小小鸟,我与IT结缘.书中是作者对个人经历与经验在IT下的体会,却给了我们很好的借鉴. IT这门行业,不仅仅再局限于如我们高中老师教学所要求的内容.IT更加开放,可以通过GitHub.CS ...
- 第一个spring冲刺第二天
讨论成员:王俊凯.罗凯杰.王逸辉.马志磊 地点:宿舍 话题:讨论关于安卓的控件的应用和如何调用 选题:四则运算 方向:更加实用的计算器功能,功能更加实用并且简单,没有太多的繁琐操作,可以的话会加上些趣 ...
- Java自学基础用法
在慕课上面简单学习了一下java语言的用法 简单的用法总结记录一下. 代码(学习输入,输出): package hello; import java.util.Scanner; public clas ...
- 12_Java面向对象_第12天(构造方法、this、super)_讲义
今日内容介绍 1.构造方法 2.this关键字 3.super关键字 4.综合案例 01构造方法引入 A:构造方法的引入 在开发中经常需要在创建对象的同时明确对象的属性值, 比如员工入职公司就要明确他 ...
- WPF string,color,brush之间的转换
String转换成Color string-"ffffff" Color color = (Color)ColorConverter.ConvertFromString(strin ...
- js中的extend,可实现浅拷贝深拷贝
js中的extend 1. JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为 ...
- json数据进行格式化
<?php /** Json数据格式化 * @param Mixed $data 数据 * @param String $indent 缩进字符,默认4个空格 * @return JSON */ ...
- [转帖]22个必须学习的Linux安全命令
22个必须学习的Linux安全命令 http://os.51cto.com/art/201808/581401.htm Linux系统的安全性涉及很多方面,从设置帐户到确保用户合法,限制比完成工作所需 ...
- java 常见的异常大集合
算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...
- mybaits入门(含实例教程和源码) http://blog.csdn.net/u013142781/article/details/50388204
前言:mybatis是一个非常优秀的存储过程和高级映射的优秀持久层框架.大大简化了,数据库操作中的常用操作.下面将介绍mybatis的一些概念和在eclipse上的实际项目搭建使用. 一.mybati ...