首页 > 数据库 >Sql 存储过程

Sql 存储过程

时间:2023-06-13 15:23:33浏览次数:50  
标签:语句 存储 调用 数据库 Sql SQL 过程

定义: Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。源自百度百科

什么时候使用存储过程:

当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;还有就是比较复杂的统计和汇总也要考虑,但是过多的使用存储过程会降低系统的移植性。

存储过程的优缺点:

存储过程不仅仅适用于大型项目,对于中小型项目,使用存储过程也是非常有必要的。其威力和优势主要体现在:
  1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
  2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
  3.存储过程可以重复使用,可减少数据库开发人员的工作量。
  4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

优点:
1.速度快。尤其对于较为复杂的逻辑,减少了网络流量之间的消耗
有的过程和函数达到了几百行,一个微型编译器,相信用程序就更麻烦了。
2.写程序简单,采用存储过程调用类,调用任何存储过程都只要1-2行代码。
(我不知道别人怎么调用,我是深受其益)
3.升级、维护方便
4.调试其实也并不麻烦,可以用查询分析器
5.如果把所有的数据逻辑都放在存储过程中,那么asp.net只需要负责界面的显示阿什么的,出错的可能性最大就是在存储过程。我碰到的就一般是这种情况。

缺点:

1.可移植性差,我一直采用sql server开发,可是如果想卖自己的东西,发现自己简直就是在帮ms卖东西,呵呵。想换成mysql,确实移植麻烦。
2.采用存储过程调用类,需要进行两次调用操作,一次是从sql server中取到过程的参数信息,并且建立参数;第二次才是调用这个过程。多了一次消耗。
不过这个缺点可以在项目开发完成,过程参数完全确定之后,把所有过程参数信息倒入到一个xml文件中来提高性能。

标签:语句,存储,调用,数据库,Sql,SQL,过程
From: https://www.cnblogs.com/KevinSteven/p/17477582.html

相关文章

  • sql 一对多,并且合并多的那字段
    SELECTwa.idASalbum_id,om.truenameASauthor,wa.titleASalbumTitle,wac.titleAScategoryTitle,wa.createtimeASpostTime, ......
  • Go 语言之 sqlx 库使用
    Go语言之sqlx库使用一、sqlx库安装与连接sqlx介绍sqlxisalibrarywhichprovidesasetofextensionsongo'sstandarddatabase/sqllibrary.Thesqlxversionsofsql.DB,sql.TX,sql.Stmt,etal.allleavetheunderlyinginterfacesuntouched,sothatthei......
  • 在使用VScode编辑器vue开发过程中,v-for在Eslint的规则检查下出现报错:Elements in iter
    报错如下: 该怎么解决呢?现在说说解决他的两种方法:1.直接在v-for循环后面绑定一个属性,跟前面需要循环的属性一一对应,截图如下:  2.在vscode中去掉Eslint规则检查,具体操作截图如下:文件–》首选项–》设置–》在搜索框中输入:vetur.validation.template,找到之后将前面的打钩......
  • 马尔可夫过程举例
    假设我们有一个简化的天气预测模型,其中考虑了三种可能的天气状态:晴天(Sunny)、多云(Cloudy)和雨天(Rainy)。我们使用马尔可夫过程来描述这些天气状态之间的转移。我们可以定义一个状态空间S={Sunny,Cloudy,Rainy},其中有三种天气状态。现在假设我们观察了一段时间内的天气情况,并记......
  • spring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle)
    序号类型地址1MySQLMySQL操作之概念、SQL约束(一)2MySQLMySQL操作之数据定义语言(DDL)(二)3MySQLMySQL操作之数据操作语言(DML)(三)4MySQLMySQL操作之数据查询语言:(DQL)(四-1)(单表操作)5MySQLMySQL操作之数据查询语言:(DQL)(四-2)(多表查询)6MySQLMySQL操作之数据控制语言:(DC)(五)7MySQLMySQL操作之数......
  • Druid解析SQL获取注释、表明
    一、简介Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。文档地址https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98参考地址:https://github.com/alibaba/druid/issues/2457https://github.com/alibaba/druid/issues/2426......
  • mysql笔记
    1.mysql初始密码修改:进入mysql后,输入:ALTERUSERroot@localhostIDENTIFIEDBY'新密码';2.mysql打开命令:1.mysql-uroot-p,密码;2.mysql-uroot-p密码;3.显示所有数据库:showdatabases;;4.删除数据库:dropdatabase数据库名;;......
  • Linux开机过程
    1.Linux开机时,会首先创建0号进程,0号进程会创建出1号和2号进程,然后0号进程本身会终止。2.1号进程(sbin/init)是所有用户进程的祖先,需要开机自启的进程可以挂在一号进程下,1号进程会再产生tty/pts终端,之后会再由该终端产生login,shell等3.2号进程是所有系统进程的祖先。4.另外,开机......
  • MySQL 8 配置文件
    #[client]#user=root#password=1111aaA_[mysql]prompt="\u@mysqldb\R:\m:\s[\d]>"no-auto-rehash[mysqld_safe]malloc-lib=tcmalloc[mysqldump]single-transaction[mysqld]#basicsettings#server-id=11port=3306user=mys......
  • mysql数据库备份及恢复命令mysqldump,source的用法
    还原一个数据库:mysql-hlocalhost-uroot-p123456www<c:/www.sql备份一个数据库:mysqldump-hlocalhost-uroot-p123456www>d:/www2008-2-26.sql  //以下是在程序中进行测试//$command="mysqldump--opt-h$dbhost-u$dbuser-p$dbpass$dbname|gzip>$backup......