- Access 教程
- 关于 Microsoft Access - Access 教程
- Access 创建数据库 - Access 教程
- Access 创建表 - Access 教程
- Access 设计视图 - Access 教程
- Access 添加数据 - Access 教程
- Access 创建表单 - Access 教程
- Access 修改表单 - Access 教程
- Access 创建查询 - Access 教程
- Access 修改查询 - Access 教程
- Access 创建关联关系 - Access 教程
- Access SQL 视图 - Access 教程
- Access 创建宏 - Access 教程
- Access 数据库导出到 excel - Access 教程
- DB2 教程
- DB2 服务器安装 - DB2 教程
- DB2 实例 - DB2 教程
- DB2 数据库 - DB2 教程
- DB2 缓冲池 - DB2 教程
- DB2 表空间 - DB2 教程
- DB2 存储组 - DB2 教程
- DB2 模式 - DB2 教程
- DB2 数据类型 - DB2 教程
- DB2 表 - DB2 教程
- DB2 别名/alias - DB2 教程
- DB2 约束 - DB2 教程
- DB2 索引 - DB2 教程
- DB2 触发器 - DB2 教程
- DB2 序列 - DB2 教程
- DB2 视图 - DB2 教程
- DB2 与 XML - DB2 教程
- DB2 备份和恢复 - DB2 教程
- DB2 数据库安全 - DB2 教程
- DB2 角色 - DB2 教程
- DB2 LDAP - DB2 教程
- Hadoop 教程
- Hadoop 大数据解决方案 - Hadoop 教程
- Hadoop 介绍快速入门 - Hadoop 教程
- Hadoop 安装 - Hadoop 教程
- Hadoop HDFS 入门 - Hadoop 教程
- MapReduce 简介和入门 - Hadoop 教程
- Hadoop 程序入门实践 - Hadoop 教程
- HBase 教程
- HBase 架构 - HBase 教程
- HBase 安装 - HBase 教程
- HBase Shell - HBase 教程
- HBase 常用命令 - HBase 教程
- HBase Admin API - HBase 教程
- HBase 创建表 - HBase 教程
- HBase 列出表 - HBase 教程
- HBase 禁用表 - HBase 教程
- HBase 启用表 - HBase 教程
- HBase 表描述和修改 - HBase 教程
- HBase Exists - HBase 教程
- HBase 删除表 - HBase 教程
- HBase 关闭 - HBase 教程
- HBase 客户端 API - HBase 教程
- HBase 创建数据 - HBase 教程
- HBase 更新数据 - HBase 教程
- HBase 读取数据 - HBase 教程
- HBase 删除数据 - HBase 教程
- HBase 扫描 - HBase 教程
- HBase 计数和截断 - HBase 教程
- HBase 安全 - HBase 教程
- Hive 教程
- Hive 安装 - Hive 教程
- Hive 数据类型 - Hive 教程
- Hive 创建数据库 - Hive 教程
- Hive 删除数据库 - Hive 教程
- Hive 创建表 - Hive 教程
- Hive 修改表 - Hive 教程
- Hive 删除表 - Hive 教程
- Hive 分区 - Hive 教程
- Hive 内置运算符 - Hive 教程
- Hive 内置函数 - Hive 教程
- Hive 视图和索引 - Hive 教程
- HiveQL Select Where - Hive 教程
- HiveQL Select Order By - Hive 教程
- HiveQL Select Group By - Hive 教程
- HiveQL Select Join - Hive 教程
- Memcached 教程
- Memcached 入门
- Memcached 简介
- Memcached 安装
- Memcached 连接
- Memcached 存储命令
- Memcached set 命令
- Memcached add 命令
- Memcached replace 命令
- Memcached append 命令
- Memcached prepend 命令
- Memcached CAS 命令
- Memcached 查找命令
- Memcached get 命令
- Memcached gets 命令
- Memcached delete 命令
- Memcached incr 与 decr 命令
- Memcached 统计命令
- Memcached stats 命令
- Memcached stats items 命令
- Memcached stats slabs 命令
- Memcached stats sizes 命令
- Memcached flush_all 命令
- Memcached 实例
- Java 连接 Memcached 服务
- PHP 连接 Memcached 服务
- MongoDB 教程
- NoSQL 简介
- 什么是 MongoDB ?
- window 平台安装 MongoDB
- Linux 平台安装 MongoDB
- MongoDB 数据库,对象,集合
- MongoDB - 连接
- PHP 安装 MongoDB 扩展驱动
- MongoDB 数据插入
- MongoDB 使用 update() 函数更新数据
- MongoDB 使用- remove() 函数删除数据
- MongoDB 查询
- MongoDB 条件操作符
- MongoDB 条件操作符 - $type
- MongoDB Limit 与 Skip 方法
- MongoDB 排序
- MongoDB 索引
- MongoDB 聚合
- MongoDB 复制(副本集)
- MongoDB 分片
- MongoDB 备份(mongodump) 与恢复(mongorerstore)
- MongoDB 监控
- MongoDB Java
- MongoDB PHP
- MongoDB 关系
- MongoDB 数据库引用
- MongoDB 覆盖索引查询
- MongoDB 查询分析
- MongoDB 原子操作
- MongoDB 高级索引
- MongoDB 索引限制
- MongoDB ObjectId
- MongoDB Map Reduce
- MongoDB 全文检索
- MongoDB 正则表达式
- MongoDB 管理工具: Rockmongo
- MongoDB GridFS
- MongoDB 固定集合(Capped Collections)
- MongoDB 自动增长
- MySQL 教程
- MySQL 教程
- MySQL 安装
- MySQL 管理
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- MySQL 排序
- Mysql Join 的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER 命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- MySQL 元数据
- MySQL 序列使用
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- PL/SQL 教程
- PL/SQL 环境安装设置 - PL/SQL 教程
- PL/SQL 基本语法 - PL/SQL 教程
- PL/SQL 数据类型 - PL/SQL 教程
- PL/SQL 变量 - PL/SQL 教程
- PL/SQL 常量和文字 - PL/SQL 教程
- PL/SQL 运算符 - PL/SQL 教程
- PL/SQL 条件控制 - PL/SQL 教程
- PL/SQL 循环 - PL/SQL 教程
- PL/SQL 字符串 - PL/SQL 教程
- PL/SQL 数组 - PL/SQL 教程
- PL/SQL 过程 - PL/SQL 教程
- PL/SQL 函数 - PL/SQL 教程
- PL/SQL 游标 - PL/SQL 教程
- PL/SQL 记录 - PL/SQL 教程
- PL/SQL 异常 - PL/SQL 教程
- PL/SQL 触发器 - PL/SQL 教程
- PL/SQL 包 - PL/SQL 教程
- PL/SQL 集合 - PL/SQL 教程
- PL/SQL 事务 - PL/SQL 教程
- PL/SQL 日期及时间 - PL/SQL 教程
- PL/SQL DBMS 输出 - PL/SQL 教程
- PL/SQL 面向对象 - PL/SQL 教程
- Redis 教程
- Redis 简介
- Redis 安装
- Redis 配置
- Redis 数据类型
- Redis 命令
- Redis 数据备份与恢复
- Redis 安全
- Redis 性能测试
- Redis 客户端连接
- Redis 管道技术
- Redis 分区
- Java 使用 Redis
- PHP 使用 Redis
- Redis 命令参考
- Key(键)
- DEL
- DUMP
- EXISTS
- EXPIRE
- EXPIREAT
- KEYS
- MIGRATE
- MOVE
- OBJECT
- PERSIST
- PEXPIRE
- PEXPIREAT
- PTTL
- RANDOMKEY
- RENAME
- RENAMENX
- RESTORE
- SORT
- TTL
- TYPE
- SCAN
- String(字符串)
- APPEND
- BITCOUNT
- BITOP
- DECR
- DECRBY
- GET
- GETBIT
- GETRANGE
- GETSET
- INCR
- INCRBY
- INCRBYFLOAT
- MGET
- MSET
- MSETNX
- PSETEX
- SET
- SETBIT
- SETEX
- SETNX
- SETRANGE
- STRLEN
- Hash(哈希表)
- HDEL
- HEXISTS
- HGET
- HGETALL
- HINCRBY
- HINCRBYFLOAT
- HKEYS
- HLEN
- HMGET
- HMSET
- HSET
- HSETNX
- HVALS
- HSCAN
- List(列表)
- BLPOP
- BRPOP
- BRPOPLPUSH
- LINDEX
- LINSERT
- LLEN
- LPOP
- LPUSH
- LRANGE
- LREM
- LSET
- LTRIM
- RPOP
- RPOPLPUSH
- RPUSH
- RPUSHX
- Set(集合)
- SADD
- SCARD
- SDIFF
- SDIFFSTORE
- SINTER
- SINTER
- SINTERSTORE
- SISMEMBER
- SMEMBERS
- SMOVE
- SPOP
- SRANDMEMBER
- SREM
- SUNION
- SUNIONSTORE
- SSCAN
- SortedSet(有序集合)
- ZADD
- ZCARD
- ZCOUNT
- ZINCRBY
- ZRANGE
- ZRANGEBYSCORE
- ZRANK
- ZREM
- ZREMRANGEBYRANK
- ZREMRANGEBYSCORE
- ZREVRANGE
- ZREVRANGEBYSCORE
- ZREVRANK
- ZSCORE
- ZUNIONSTORE
- ZINTERSTORE
- ZSCAN
- Pub/Sub(发布/订阅)
- PSUBSCRIBE
- PUBLISH
- PUBSUB
- PUNSUBSCRIBE
- SUBSCRIBE
- UNSUBSCRIBE
- Transaction(事务)
- DISCARD
- EXEC
- MULTI
- UNWATCH
- WATCH
- Script(脚本)
- EVAL
- EVALSHA
- SCRIPT EXISTS
- SCRIPT FLUSH
- SCRIPT KILL
- SCRIPT LOAD
- Connection(连接)
- AUTH
- ECHO
- PING
- QUIT
- SELECT
- Server(服务器)
- BGREWRITEAOF
- BGSAVE
- CLIENT GETNAME
- CLIENT KILL
- CLIENT LIST
- CLIENT SETNAME
- CONFIG GET
- CONFIG RESETSTAT
- CONFIG REWRITE
- CONFIG SET
- DBSIZE
- DEBUG OBJECT
- DEBUG SEGFAULT
- FLUSHALL
- FLUSHDB
- INFO
- LASTSAVE
- MONITOR
- PSYNC
- SAVE
- SHUTDOWN
- SLAVEOF
- SLOWLOG
- SYNC
- TIME
- SQL 教程
- SQL 基础
- SQL 简介
- SQL 语法
- SQL SELECT 语句
- SQL SELECT DISTINCT 语句
- SQL WHERE 子句
- SQL AND & OR 运算符
- SQL ORDER BY 子句
- SQL INSERT INTO 语句
- SQL UPDATE 语句
- SQL DELETE 语句
- SQL 高级
- SQL TOP 子句
- SQL LIKE 操作符
- SQL 通配符
- SQL IN 操作符
- SQL BETWEEN 操作符
- SQL Alias(别名)
- SQL JOIN
- SQL INNER JOIN 关键字
- SQL LEFT JOIN 关键字
- SQL RIGHT JOIN 关键字
- SQL FULL JOIN 关键字
- SQL UNION 和 UNION ALL 操作符
- SQL SELECT INTO 语句
- SQL CREATE DATABASE 语句
- SQL CREATE TABLE 语句
- SQL 约束 (Constraints)
- SQL NOT NULL 约束
- SQL UNIQUE 约束
- SQL PRIMARY KEY 约束
- SQL FOREIGN KEY 约束
- SQL CHECK 约束
- SQL DEFAULT 约束
- SQL CREATE INDEX 语句
- SQL 撤销索引、表以及数据库
- SQL ALTER TABLE 语句
- SQL AUTO INCREMENT 字段
- SQL VIEW(视图)
- SQL 函数
- SQL Date 函数
- SQL NULL 值
- SQL NULL 函数
- SQL 数据类型
- SQL 服务器 - RDBMS
- SQL 函数
- SQL AVG 函数
- SQL COUNT() 函数
- SQL FIRST() 函数
- SQL LAST() 函数
- SQL MAX() 函数
- SQL MIN() 函数
- SQL SUM() 函数
- SQL GROUP BY 语句
- SQL HAVING 子句
- SQL UCASE() 函数
- SQL LCASE() 函数
- SQL MID() 函数
- SQL LEN() 函数
- SQL ROUND() 函数
- SQL NOW() 函数
- SQL FORMAT() 函数
- SQL 快速参考
- SQLite 教程
- SQLite 基础
- SQLite 简介
- SQLite 安装
- SQLite 命令
- SQLite 语法
- SQLite 数据类型
- SQLite 创建数据库
- SQLite 附加数据库
- SQLite 分离数据库
- SQLite 创建表
- SQLite 删除表
- SQLite Insert 语句
- SQLite Select 语句
- SQLite 运算符
- SQLite 表达式
- SQLite Where 子句
- SQLite AND/OR 运算符
- SQLite Update 语句
- SQLite Delete 语句
- SQLite Like 子句
- SQLite Glob 子句
- SQLite Limit 子句
- SQLite Order By
- SQLite Group By
- SQLite Having 子句
- SQLite Distinct 关键字
- SQLite 高级
- SQLite PRAGMA
- SQLite 约束
- SQLite Joins
- SQLite Unions 子句
- SQLite NULL 值
- SQLite 别名
- SQLite 触发器(Trigger)
- SQLite 索引(Index)
- SQLite Indexed By
- SQLite Alter 命令
- SQLite Truncate Table
- SQLite 视图(View)
- SQLite 事务(Transaction)
- SQLite 子查询
- SQLite Autoincrement(自动递增)
- SQLite 注入
- SQLite Explain(解释)
- SQLite Vacuum
- SQLite 日期 & 时间
- SQLite 常用函数
- SQLite 接口
- SQLite - C/C++
- SQLite - Java
- SQLite - PHP
- SQLite - Perl
- SQLite - Python
- SQL Server 教程
- 关于 Microsoft SQL Server - SQL Server 教程
- SQL Server 2014 版 - SQL Server 教程
- SQL Server 安装 - SQL Server 教程
- Windows2012 R2 上安装.NET3.5 框架 - SQL Server 教程
- SQL Server 管理套件(SSMS) - SQL Server 教程
- SQL Server 创建数据库 - SQL Server 教程
- SQL Server 创建表 - SQL Server 教程
- SQL Server 添加数据 - SQL Server 教程
- SQL Server SQL 脚本 - SQL Server 教程
- SQL Server 查询设计器 - SQL Server 教程
- SQL Server 视图 - SQL Server 教程
- SQL Server 存储过程 - SQL Server 教程
- SQL Server 服务器角色 - SQL Server 教程
- SQL Server 数据库模式 - SQL Server 教程
- SQL Server 链接服务器 - SQL Server 教程
SQL Server 存储过程 - SQL Server 教程
在 SQL Server 中,存储过程是比视图更强大。视图让我们简单地做一个 SELECT 查询也在可视图本身,它的工作方式是用于运行复杂的查询。 但视图并不姝真正为我们提供代码业务逻辑的能力。例如,视图不会能让我们增加条件代码(如 IF 语句)。幸运的是存储过程可能使用。
什么是存储过程?
存储过程是一组 SQL 语句编译成一个 SQL。类似于在说的 SQL 脚本页面,在这里可以运行许多 SQL 脚本合为一个整体。
然而,存储过程并不仅仅是一个长脚本。这是已保存在 SQL Server 中明确在存储过程节点的脚本。存储过程通常包含一些业务逻辑。 例如,一个存储过程可以接受被传递给它的并针对这些参数测试使用 IF 语句的参数。例如,如果该参数是一个值,这样做,如果它是另一个值。
它们包含业务逻辑的能力使存储过程 SQL Server 的强大的一部分。存储过程可以提高性能的应用程序,因为存储过程进行解析,并尽快,因为它是建立优化,然后存储在内存中。运行通过存储过程条件的查询可以是非常快 - 相比,发送查询通过网络,到 SQL Server 的应用程序,遂将全部返还给它在网络上,因此它可以过滤通过它,并挑选出只是它感兴趣的记录数据。
存储过程的好处
下面是一些在使用存储过程的主要优点:
好处 | 说明 |
---|---|
模块化编程 | 可以写一个存储过程一次,然后一次又一次地调用它,从应用程序的不同部分(甚至多个应用程序)。 |
性能 | 存储过程提供更快的代码执行和减少网络流量。更快的执行:存储过程进行解析,并为他们创造尽快优化和存储过程是存储在内存中。这意味着它会执行比从应用程序到 SQL Server 发送 SQL 多行代码快了很多。这样做需要 SQL Server 来编译和每次运行时优化改进你的 SQL 代码。减少网络流量:如果通过网络发送的 SQL 多行代码到你的 SQL Server 中,这会影响网络性能。如果你有数以百计的 SQL 代码行和/或你有很多活动在应用程序,这是尤其如此。运行 SQL Server 上的代码(作为存储过程中)消除了需要发送此代码在网络上。唯一的网络通信将提供的参数和任何查询的结果。 |
安全 | 用户无需执行任何直接的语句可以执行存储过程。因此,存储过程可以谁也不能正常访问这些任务的用户提供先进的数据库功能,但这种功能是在严格控制的方式提供。 |
创建一个存储过程
要创建一个存储过程,需要使用 CREATE PROCEDURE 语句,其次是弥补了存储过程的代码。如果存储过程将要接受参数,它们需要被包括在名称后。
CREATE PROCEDURE myStoredProcedure AS
...
OR
CREATE PROCEDURE myStoredProcedure @{Parameter Name} {data type} AS
...
示例
下面的代码创建一个存储过程被称为“LatestTasks”。它接受一个参数名为 @Count. 当调用这个存储过程,通过 @count 参数,它决定你想要多少行返回。下面的代码:
CREATE PROCEDURE LatestTasks @Count int AS
SET ROWCOUNT @Count
SELECT TaskName AS LatestTasks, DateCreated
FROM Tasks
ORDER BY DateCreated DESC
运行这段代码在 SQL Server 管理套件,会看到它被在存储过程节点创建为“LatestTasks”。
在 SQL Server2014,可以在存储过程节点/文件夹中创建通过右键单击一个存储过程,选择存储过程....这将打开一个模板,这是随时可以填入自己的具体程序。
执行存储过程
现在,已经创建了存储过程,要执行它的任何时间,需要使用调用它要么执行或 EXEC。如果存储过程的参数要求提供这些程序名在后面。像这样:
EXECUTE LatestTasks
EXEC LatestTasks
EXEC LatestTasks @Count = 5
示例
在下面的例子中,我们在同一时间执行存储过程两次。我们第一次调用它,我们通过 @Count 传递为 3,第二次传递的值为 5。
该截图显示,通过传递参数(和值),存储过程返回结果的基础上提供值。顶端结果集返回 3 行,因为我们通过值 3。第二个结果集返回 5 行,因为我们提供一个值 5:
使用 GUI
还可以使用图形用户界面来执行存储过程。
具体方法如下:
- 使用对象资源管理器,浏览到存储过程
- 右键单击该存储过程并选择 Execute Stored Procedure...:
- 会出现一个对话框。输入您所选择的参数值:
- 点击 OK
- SQL Server 现在会生成 SQL 代码并执行存储过程。
修改存储过程
如果需要修改现有的存储过程,只需更换 CREATE 使用 ALTER。 让我们添加一个空格之间“Latest”和“Tasks”(即“Latest Tasks”),并添加描述字段:
ALTER PROCEDURE LatestTasks @Count int AS
SET ROWCOUNT @Count
SELECT TaskName AS "Latest Tasks", Description, DateCreated
FROM Tasks
ORDER BY DateCreated DESC
系统存储过程
SQL Server 包含了大量的系统存储过程,以帮助数据库管理任务。可以通过 GUI 执行的任务可以通过系统存储过程来完成。 例如,有些东西可以用系统存储过程的包括:
- 配置安全帐户
- 建立链接服务器
- 创建一个数据库维护计划
- 创建全文检索目录
- 添加远程登录
- 配置复制
- 设置调度作业
- 以及更多...
命名约定
扩展系统存储过程节点,一起来看看。会发现,他们的名字都开始以 sp_,表明它是一个存储过程。该系统存储过程显然遵循的命名约定。
这是一个好主意,制定一个一致的命名约定存储过程(并为数据库中的所有其他对象)。
有些人前缀的存储过程 usp_,另外其他人使用 SQL 关键字,如 SELECT,INSERT,UPDATE,DELETE。其他人使用的缩写应用。
一些使用下划线的存储过程(例如,latest_tasks)在单独的单词,而其他人将使用标题的情况下(例如,LatestTasks)。
因此,这是可能的,我们的存储过程可以被命名为以下任意一种,这取决于命名约定的使用。
- LatestTasks
- latest_tasks
- uspLatestTasks
- usp_latest_tasks
- selectLatestTasks
- select_LatestTasks
- select_latest_tasks
- getLatestTasks
- get_latest_tasks
最重要的是一致性。选择一个,并坚持下去。它会更容易,当你需要使用存储过程。 想象一下,有几十,甚至上百的存储程序,每一次执行一次,需要找到它在对象资源管理器,是否把它称为 usp_LatestTasks 或 uspLatestTasks。
所以这是存储过程覆盖。接下来,我们了解 用户登录 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论