什么是存储过程?有什么优点?

author author     2023-03-19     677

关键词:

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。

优点:

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

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

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

扩展资料

存储过程的缺点:

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

2、可移植性差:由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则需要将业务逻辑封装在不特定于 RDBMS 的中间层中。

参考资料来源:百度百科-存储过程

参考技术A 一、存储过程:
存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
二、存储过程的优点:
   1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
  2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
  3.存储过程可以重复使用,可减少数据库开发人员的工作量
  4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权
参考技术B 存储过程是一组予编译的SQL语句
它的优点:1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
  2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。
  3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。
       4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。本回答被提问者采纳
参考技术C 1. 运行速度:对于很简单的 sql ,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对其进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,所以执行速度会比普通 s ql 快。 2. 减少网络传输:存储过程直接就在数据库服务器上跑,所有的数据访问都在数据库服务器内部进行,不需要传输数据到其它服务器,所以会减少一定的网络传输。但是在存储过程中没有多次数据交互,那么实际上网络传输量和直接 sql 是一样的。而且我们的应用服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。 3. 可 维护性:的存储过程有些时候比程序更容易维护,这是因为可以实时更新 DB 端的存储过程 。 有些 bug ,直接改存储过程里的业务逻辑,就搞定了。 4. 增强安全性:提高代码安全,防止 SQL 注入 。这一点 sql 语句也可以做到。 5. 可扩展性:应用程序和数据库操作分开,独立进行,而不是相互在一起。方便以后的扩展和 DBA 维护优化。 参考技术D 作者:MrSky
链接:https://www.zhihu.com/question/21345483/answer/325288401
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

存储过程的定义:
一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
通过定义很容易知道存储过程的本质是SQL语集;因此如果你会SQL语句,其实你只需要再学习一些SQL存储过程里面的语法,关键字,你也就会使用存储过程了,和存储过程非常类似的触发器也是如此。
那么它有什么优缺点呢?
还是继续看定义“完成特定功能的SQL 语句集” “经过第一次编译后再次调用不需要再次编译”;是的,它可以完成特定的功能并且只需编译一次。
什么是特定的功能?
例如所有的业务逻辑,以及在进行入库的时候需要统一对入库数据进行格式化处理等等功能。
有过项目开发经历的同学应该知道,当我们将很多业务逻辑写在存储过程里面的时候,我们统一修改业务逻辑会非常方便。
我程序部署到正式服务器环境以后,如果这时候发现业务逻辑有问题,更改程序代码是很危险的事情,用“牵一发而动全身”来形容也不为过,而且由于本地测试代码和发布到正式环境的代码有诸多不同,因此临时更改代码非常危险。
如果我们将业务逻辑写在了存储过程里面,我们甚至无需要重新更改代码,重新编译,重新发布。我们直接更改数据库里面的存储过程就可以完成程序的相应更改,这大大方便了我们发布以后对程序的更改,增强了程序安全性。
因此存储过程的优点1:
实现特定的功能,将业务和程序代码进行分离,增强程序维护性。

数据库

 1. 什么是存储过程?它有什么优点?答:存储过程是一组予编译的SQL语句,它的优点有:   允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。   允许更快... 查看详情

emmc和ddr的区别是啥?国产存储芯片有什么优点?

...等电子设备时,都会接触到像eMMC、DDR这样的存储器,为什么有的用eMMC、有的用DDR呢?这两者有什么区别?宏旺半导体之前说过,eMMC全称为“embeddedMultiMediaCard”,即嵌入式的多媒体存储卡。对于eMMC,我们其实可以按照它名字的... 查看详情

基础-存储过程(代码片段)

什么是存储过程     如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。  竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储... 查看详情

用户定义函数相对于存储过程的优势

...题描述】:我对用户定义的函数有一些疑问。我想知道为什么/何时使用函数。函数相对于存储过程的优势是什么?通过谷歌搜索我看到文章建议:存储过程比函数更有优势。函数的错误处理有限函数不能使用临时表函数不能调... 查看详情

数据库的存储过程机制

  什么是存储过程   如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程... 查看详情

你为什么(不)用存储过程?

存储过程(StoredProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行... 查看详情

sql存储过程有什么用

Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。Ø存储过程的概念存储过... 查看详情

存储过程

  什么是存储过程?    可以理解为数据库中的方法,与C#中的方法一样,具有参数和返回值;   存储过程的优点?    提高运行速度:存储过程在创造是进行编译,以后运行存储过程都不需要再进行编译,极... 查看详情

数据库存储过程是啥

参考技术A问题一:sql数据库中的存储过程该怎么理解有什么用啊?存储过程是SQL语句和流程控制语句的预编译***,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序调用执行,而且允许用户声明变... 查看详情

mobx是什么?有什么优点?

mobx是一个简单可扩展的状态管理库。 mobxvsreduxmobx是学习成本更低,性能更好的状态解决方案。mobx开发难度低;mobx代码量少;mobx渲染性能好; 查看详情

浅谈数据库之存储过程(代码片段)

什么是存储过程如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。竟然他说方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值。存储... 查看详情

jmeter的优点是什么?除了轻量级,它和loadrunner有什么本质区别

 1、jmeter的架构和loadrunner原理一样,都是通过中间代理,监控和收集并发客户端发出的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈结果的一个过程;  2、分布式中间代理功能在jmeter中也有,这个分页式... 查看详情

存储过程中'@'和'declare'有什么区别?(代码片段)

@和DECLARE在存储过程中有什么区别?CREATEPROCEDUREPRO@IDINT@NAMENVARCHARASBEGINDECLARE@ADDRESSNVARCHAREND答案SQLServer中的变量名称以@开头。存储过程(和用户定义的函数)可以以变量的形式接收parameters-它们只是用它们的名称和数据类型列出。... 查看详情

数据仓库|数据库面试题总结

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?引擎MySQL存储引擎MyISAM与InnoDB区别常用的存储引... 查看详情

软件测试基础理论体系学习8-什么是验收测试?验收测试的内容是什么?过程是什么?有什么测试策略?

8-什么是验收测试?验收测试的内容是什么?过程是什么?有什么测试策略?1验收测试的主要内容1.1简介和说明1.2验收测试的目的1.3验收测试的任务1.4验收测试主要内容1.4.1验收测试标准1.4.2配置复审1.4.3α、β测试... 查看详情

存储过程

了解新事物需要问的问题:什么是存储过程?什么时候用存储过程?存储过程是什么样的?怎么调用存储过程?  什么时候用存储过程?当逻辑复杂的时候,当一条sql表达不出来的时候,当sql很复杂的时候,当要执行一堆... 查看详情

存储过程到底是什么

在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是sql语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时... 查看详情

初学者对编译原理是什么,作用,优点,

...你理解机器是如何理解高级语言的。 学习编译原理有什么好处?当你真正完成编译原理的学习后,你对你所写的程序、程序语言都会有更深的本质认识,这样的认识也会让你站的高度完全不同,并且知道编译的过程方法理论... 查看详情