sqlserver中常用的几个存储过程

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: sqlserver中常用的几个存储过程

sqlserver中的存储过程,何为存储过程呢?

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL

语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

.

存储过程的优点:

①重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。

②减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

③安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。 简单讲:

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3.存储过程可以重复使用,可减少数据库开发人员的工作量

4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权 有一点需要注意的是,一些网上盛传的所谓的存储过程要比sql语句执行更快的说法,实际上是个误解,并没有根据,包括微软内部的人也不认可这一点,所以不能作为正式的优点,希望大家能够认识到这一点。

缺点:

1:调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。

2:移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。

3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

4:

如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。

下面就是举例sqlserver中的存储过程的几个案例:

--创建一个存储过程,查询全部的员工信息
CREATE PROCEDURE finAll
AS
 BEGIN
     SELECT * 
     FROM emp 
END
EXECUTE finAll
--根据员工名称模糊查询员工信息
DROP PROCEDURE findByname
CREATE PROCEDURE findByname
    @name VARCHAR(50)       --传入一个参数,姓名
AS
BEGIN
    SELECT * FROM emp WHERE ename like '%'+@name+'%'
END
--调用存储过程
EXECUTE findByname '张'
--创建一个带输出参数的存储过程
CREATE PROCEDURE out_emp
    @name VARCHAR(50) OUTPUT,
    @age INT OUTPUT,
    @DATE DATE OUTPUT
AS
BEGIN 
    SELECT @name = ename,@age = eage,@DATE = eDATE FROM emp 
END
DECLARE @_name VARCHAR(50);
DECLARE @_age INT ;
DECLARE @_DATE DATE;
    EXECUTE out_emp  @_name OUTPUT ,@_age OUTPUT ,@_DATE OUTPUT;
PRINT @_name  
PRINT @_age  
PRINT @_DATE  
--根据名称模糊查询员工信息(使用if)
CREATE PROCEDURE findByNameAsIf
    @_name varchar(50)
    AS
    BEGIN 
        IF @_name is null or @_name =''
    BEGIN
        SELECT * FROM emp;
    END
        ELSE
    BEGIN
        SELECT * FROM emp WHERE ename LIKE '%'+@_name+'%';
    END
END
--调用存储过程
EXECUTE findByNameAsIf '张'
EXECUTE findByNameAsIf ''


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
5月前
|
存储 SQL Go
sqlserver存储过程
sqlserver存储过程
|
12月前
|
存储
SQLServer存储过程中事务的创建
SQLServer存储过程中事务的创建
61 0
|
2月前
|
存储 SQL 数据库
如何使用 SQL Server 创建存储过程?
【8月更文挑战第31天】
67 0
|
4月前
|
存储 机器学习/深度学习 SQL
SQLSERVER存储过程语法详解
SQLSERVER存储过程语法详解
150 0
|
5月前
|
存储 数据库
sqlserver------数据库的存储过程(练习)
sqlserver------数据库的存储过程(练习)
42 1
|
5月前
|
存储 SQL
SQL Server 存储过程 触发器 事务处理
SQL Server 存储过程 触发器 事务处理
|
12月前
|
存储 SQL 数据库
SQLServer存储过程的执行计划
SQLServer存储过程的执行计划
104 0
|
16天前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
82 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
11天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
22 4
|
25天前
|
SQL 存储 数据管理
SQL Server数据库
SQL Server数据库
41 11
下一篇
无影云桌面