SQL高级知识——存储过程

这篇具有很好参考价值的文章主要介绍了SQL高级知识——存储过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

存储过程的定义

存储过程其实就是已预编译为可执行过程的一个或多个SQL语句。 通过调用和传递参数即可完成该存储过程的功能。

CREATE PROC | PROCEDURE procedure_name
[{@参数数据类型} [=默认值] [OUTPUT],
{@参数数据类型} [=默认值] [OUTPUT],
....
]
AS
sql_statements
GO

存储过程在创建阶段可以带参数或不带参数,不带参数的一般是执行一些不需要传递参数的语句就可以完成的功能,带参数那就是需要传递参数的SQL语句,就像上面的示例,传递了两个参数给SQL语句。带参数的一定要定义参数类型,是字符型的还要定义长度,给参数加默认值是可选的。

存储过程的优点

提高性能

SQL语句在创建过程时进行分析和编译。 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时便可节省此开销。

降低网络开销

存储过程调用时只需用提供存储过程名和必要的参数信息,从而可降低网络的流量。

便于进行代码移植

数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。

更强的安全性

系统管理员可以对执行的某一个存储过程进行权限限制,避免非授权用户对数据的访问在通过网络调用过程时,只有对执行过程的调用是可见的。 因此,恶意用户无法看到表和数据库对象名称、嵌入自己的 Transact-SQL 语句或搜索关键数据。

使用过程参数有助于避免 SQL 注入攻击。 因为参数输入被视作文字值而非可执行代码,所以,攻击者将命令插入过程内的 Transact-SQL 语句并损害安全性将更为困难。

可以对过程进行加密,这有助于对源代码进行模糊处理。

存储过程的缺点

逻辑处理吃力

SQL本身是一种结构化查询语言,但不是面向对象的的,本质上还是过程化的语言,面对复杂的业务逻辑,过程化的处理会很吃力。同时SQL擅长的是数据查询而非业务逻辑的处理,如果如果把业务逻辑全放在存储过程里面,违背了这一原则。

修改参数复杂

如果需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新调用,等等,这时候估计会比较繁琐了。

开发调试复杂

由于IDE的问题,存储过程的开发调试要比一般程序困难。

无法应用缓存

虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。

不支持群集

数据库服务器无法水平扩展,或者数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。

存储过程在业务量小的系统中应用比较广泛,将逻辑全部交给数据库进行处理,可以快速完成一些逻辑功能。但是针对业务量比较大的系统,一般是禁止使用存储过程的,因为对数据库的压力太大。文章来源地址https://www.toymoban.com/news/detail-417852.html

到了这里,关于SQL高级知识——存储过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用SQL语句创建存储过程

    本篇文章是记录学校学习 SQL server 中知识,可用于复习资料. 定义: 存储过程 是为了完成特定功能的SQL语句集合,存储在数据库中,用户通过指定 存储过程 的名称并给出参数来执行。 优点: 1、方便修改。   因为 存储过程 是存储在数据库中的,如果需要涉及到修改SQL语句

    2024年02月08日
    浏览(28)
  • SQL server 创建存储过程

       存储过程: 可以理解为完成特定功能的一组 SQL 语句集,存储在数据库中,经过第一次编译,之后的运行不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程。 如何创建存储过程   创建存储过程可以有两种方式:一

    2024年02月07日
    浏览(31)
  • [SQL挖掘机] - 存储过程

    当你在sql中需要多次执行相同的一组sql语句时,存储过程是一个非常有用的工具。它是一段预先定义好的sql代码块,可以被命名并保存在数据库中,以便重复使用。 存储过程可以包含多个sql语句、逻辑流程、条件判断和循环等,可以完成复杂的数据库操作。通俗地说,存储过

    2024年02月14日
    浏览(26)
  • SQL-存储过程、流程控制、游标

    开发过程总,经常会遇到重复使用某一功能的情况 MySQL引人了存储过程(Stored Procedure)这一技术 存储过程就是一条或多条SQL语句的集合 存储过程可将一系列复杂操作封装成一个代码块,以便重复使用,从而减少工作量提升开发效率。 SQL语句需先编译然后执行。 存储过程将为了

    2024年02月10日
    浏览(32)
  • SQL Server 存储过程:BBS论坛(表结构文档下载及30个存储过程)

    基于 Asp.Net 和 SQL Server 实现了一个BBS论坛,论坛功能比较强大,论坛大部分业务逻辑基于存储过程实现,记录一下。 序号 存储过程 功能说明 1 sp_bbs_admin_add 添加管理员 2 sp_bbs_admin_del 删除系统管理员 3 sp_bbs_admin_modi 修改管理员密码 4 sp_bbs_article_add 发表帖子 5 sp_bbs_article_del 删

    2024年04月09日
    浏览(27)
  • MySQL 自定义 split 存储过程

            MySQL 没有提供 split 函数,但可以自己建立一个存储过程,将具有固定分隔符的字符串转成多行。之所以不能使用自定义函数实现此功能,是因为 MySQL 的自定义函数自能返回标量值,不能返回多行结果集。 MySQL 8: MySQL 5: 测试: 返回指定下标的元素:

    2024年02月11日
    浏览(23)
  • SQL高级知识点

    MySQL基础 1、安装    1)设置编码    2)设置密码 2、配置文件:my.ini、my.cnf    1)设置端口号      port=3306    2)设置编码    3)存储引擎     4)最大连接数    注意:重启mysql服务 3、登陆mysql数据库    问题:\\\"mysql\\\"不是系统内部或外部命令....    解决:将mysql的bin目录配置到

    2024年02月10日
    浏览(32)
  • SQL视图、存储过程、触发器

    视图(view)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查

    2024年02月09日
    浏览(41)
  • SQL Server基础之存储过程

     SQL Server中的存储过程是使用T_SQL编写的代码段。它的目的在于能够方便的从系统表中查询信息,或者完成与更新数据库表相关的管理任务和其他的系统管理任务.T_SQL语句是SQL Server数据库与应用程序之间的编程接口。在很多情况下,一些代码会被开发者重复编写多次,如果

    2024年02月13日
    浏览(26)
  • oracle 自定义存储过程(非常简单明了)

    1.举一个简单的例子 定义存储过程 easyProcedure 入参为 两个数 出参为 他们的和 使用存储过程接着往下看 2.举一个复杂的例子(例子比较复杂,但很实用) ①创建 TYPE 类型 atrr_type ②将 TYPE 类型 atrr_type 定义为表, 用做接收返回值 ③定义存储过程 入参为 objt 出参为 一张表 ④

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包