当前位置:首页 » 存储配置 » 现在不写存储过程了吗

现在不写存储过程了吗

发布时间: 2022-10-04 15:26:42

1. 现在写那个sql代码是不是都要用存储过程,这样有什么好处

不需要每条sql都要用存储过程,存储过程有优点也有缺点的
优点:
* 存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。
* 可保证数据的安全性和完整性。
* 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。
* 可以降低网络的通信量。
* 使体现企业规则的运算程序放入数据库服务器中,以便:
# 集中控制。
# 当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。

简单讲:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权

缺点:
1:调试麻烦
2:移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。
3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译。
4: 如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。

2. 现在oracle在实际运用中存储过程用的多吗

这个是必须使用的,我们公司的项目中就使用到了
*1) 存储过程帮助在数据库层聚集T-SQL代码。嵌入即席SQL的网站或应用程序在应用环境下很难修改,当即席SQL嵌入在应用程序内的时候,你可能会花费太多时间试图找到和调试嵌入的SQL。-- 一旦找到了bug,你可能就需要重新编译可执行程序,引起不必要的应用程序临时停止或痛苦的应用程序部署。如果把T-SQL集中到存储过程中去,-- 你就只需要集中在一个地方来查询SQL代码或SQL批处理。如果你能正确地为代码建立文档并对代码标准化,存储过程就会提升整个应用程序的可支持性。

-- *2) 存储过程帮助大的即席查询减少网络流量。编写应用程序调用而不是500行的SQL调用来执行存储过程,对网络以及应用程序的性能有正面影响,特别是当调用在一分钟内重复数千次时。

-- *3) 存储过程促进代码的可利用性。例如,如果你的网站应用程序使用一个下拉菜单来包含一组城市,并且这个下拉菜单用于很多网页,-- 你可以在每个页面调用存储过程而不是在多个地方嵌入相同的SQL。

-- *4) 存储过程淡化数据获取的方法。如果你修改了提供源数据的基本表,存储过程(和视图相似)能让应用程序对这个修改透明。这样就不需要修改应用程序底层的代码就能修改。-- 你可以把老的表换成新的,而且只要同样的列和数据类型返回给应用程序,则应用程序完全不知情。

-- *5) 与视图不同,存储过程可以利用流控制技术、临时表、表变量等。

-- *6) 存储过程对查询响应时间的影响比较稳定。如果你使用大量的即席查询,可能会注意到有时候从查询中返回结果所花的时间变化很大

3. java软件开发一定要会存储过程吗

不需要了~都用hibernate操作数据库了~C#存储过程用的多

4. 请问什么年代了,还不用存储过程。服了。

存储过程可以使得程序执行效率更高、安全性更好。因为在客户端写SQL需要先分析再执行,但是在服务器端存储过程建立之后已经编译并且储存到数据库,这样客户端只需要直接用便可以了。并且可以防止SQL注入攻击。等等这些针对存储过程的普遍认知的好处就不细说了。
我打算从编码级别谈谈这个问题。
1、代码级别提高安全性。在程序员编码的时候往往会自己写SQL语句,这样会导致直接将后台数据库的许多信息暴露出来。
2、防止SQL语句泛滥。程序员编码的时候总是将许多SQL语句重复的写来写去,这样既增加了系统的代码量,又降低了系统的执行效率。如果使用统一的存储过程,这样可以将程序员的侧重点放在接口的参数上。
3、增强分工降低了程序员的工作量。如果能增强分工能力那样更能提高效率,例如有的程序员主要关注界面交互的,有的程序员需要关注服务接口,而有的程序员需要关注服务器相关业务,这样才能做到分工明确。而现在的情况是一个程序员从前到后全部都涉及。这样不利于工作的针对性。如果使用存储过程的话,那么程序员在编码的时候便可以很轻松的将业务需要的参数按照要求传递进去便可以了。而不必去过多的关注其中的实现。可以将更多的精力转移到相应的其他操作中去。
4、应对变化的业务操作。如果不使用存储过程的话,当业务变更的时候,一般的处理方式是找出变更的业务,然后将那部分表的操作进行变更,然后将变更涉及到的模块重新编译。这样的做法会降低系统开发的反应时间,不能尽快的做到应对。但是如果使用存储过程的话,将业务的操作部分移到服务器端,这样的话,相应的业务变更的时候,只需要在服务器端更新相应的存储过程便可达到目的,系统则没必要过多的去关注。这样便增加了系统的反应时间,达到尽快应对的效果。

5. 存储过程的问题,请高手帮忙

不用写存储过程,直接一个查询语句就可以了

Access写法
select 班级名称, sum(iif(分数>=90,1,0)) as A, sum(iif(分数>=80 and 分数<90,1,0)) as B, sum(iif(分数>=70 and 分数<80,1,0)) as C, sum(iif(分数>=60 and 分数<70,1,0)) as D, sum(iif(分数<60,1,0)) as E from 成绩表 group by 班级名称

Sql2000写法
select 班级名称, sum(case when 分数>=90 then 1 else 0 end) as A, sum(case when 分数>=80 and 分数<90 then 1 else 0 end) as B, sum(case when 分数>=70 and 分数<80 then 1 else 0 end) as C, sum(case when 分数>=60 and 分数<70 then 1 else 0 end) as D, sum(case when 分数<60 then 1 else 0 end) as E from 成绩表 group by 班级名称

A 为 90分以上的人数,B 为 80~90分的人数,C 为 70~80分的人数,D 为 60~70分的人数,E 为 60分一下的人数

6. 现在在c#项目开发中“存储过程”用的多吗

存储过程用的还是挺多的,因为存储过程可以避免SQL注入攻击,同时执行效率也比直接使用SQL语句要高得多。现在你可以选择LINQ,使用更加方便,而且是面向对象的,即把SQL中每一行当做一个对象来操作,同时语句也比较直观。

7. mysql 为什么没有存储过程

我不是这样理解的
1对于某些返回行纪录很多的情况,存储过程发挥很大作用,第1次编译之后,之后不用再编译,直接走执行计划
理论上要快很多的
2特别某些大表,复杂应用有时候必须用存储过程

我回忆很多年前作项目,有专家指导团队要求所有SQL代码全部转为存储过程----一方面安全性,另1方面速度理论要快

现在我当前环境确实是并发量大的应用,我觉得对于单条插入 删除 修改等操作可以不用
但是类似 SQL我觉得还是应该用存储过程 (现在我不知道mysql的内部机智)

8. 现在编程开发是不是都普遍使用存储过程来操作数据库了

您好,1. 直接在程序中构造SQL的话后期维护, 比如表字段的增减, 有可能会影响到你SQL语句的可执行性, 那个时候你就必须要修改程序源码, 可能的结果是牵一发而动全身, 如果用存储过程, 那么只要更新存储过程就可以了, 便于维护!
2. 如果不法分子破解你的程序, 存储过程是放在你的数据库服务器上的!那么光得到你的存储过程名称, 没有实际的实现代码~~所以使用存储过程的安全性相对较高!
3. 存储过程的执行效率较高, 速度快!复杂的查询, 对速度的要求还是有讲究的。

9. 题外话,为什么不用数据库的存储过程

不建议使用存储过程的原因
其一:各种数据库的存储过程语法相差很大,给将来的数据库移植带来很大的困难
其二:不利于版本控制,代码无法Diff和回滚,多人编辑无法同步。
虽然数据库建模工具可以把脚本保存为文件,然后进行Diff,但终究功能有限。
其三:编码不便,其实也就是说数据库脚本语言功能有限,
无法定义数组,集合,为了循环需要使用效率低下的游标
其四:调试功能不强。
虽然在数据库客户端工具里,也可以调试,却也和现在功能强大IDE集成工具的调试
却不可同日而语。而且现在一般调试是由应用程序发起的,从应用程序却又无法
跟踪调试回存储过程中。所以必须两处调试,终究不便。
其五:存储过程会调用函数,视图或者别的存储过程,但是数据库的编辑工具,
不像时下的开发工具,能够准确定位对象或对象方法,所以带来维护,修改的困难。
其五:现在大多应用级系统会分层处理,数据层,业务层,界面层。
我们把大量使用存储过程的C/S或者B/S系统称为两层半,也就是说存储过程就是我们
说的半层,也就是把大量业务逻辑放在存储过程里。业务逻辑往往是系统的核心所在,
往往修改会很频繁,存储过程的使用会带来修改困难,修改流程困难,调试麻烦,
所以付出的代价是很大的。
其六:面向业务编程,而不要面向数据编程。
面向业务编程,其实也就是之前我说的领域逻辑模式中的领域模型,也是我不赞成用存储过程
的根本原因。
如果大量用到存储过程,就势必会和数据表、字段、字段类型等等关系形数据库打交道,
面向对象的优势就体现不了,也就无从谈起继承,多态,设计模式等来适应业务变化。
很多J2EE的项目甚至不用存储过程,也照样开发的很好。

其七:也许会遇到业务逻辑特别复杂的情况,遇到这种情况,我的感觉是你应该回头看看业务建模是否合理。

10. mysql 为什么不用存储过程

我不是这样理解的
1对于某些返回行纪录很多的情况,存储过程发挥很大作用,第1次编译之后,之后不用再编译,直接走执行计划
理论上要快很多的
2特别某些大表,复杂应用有时候必须用存储过程

我回忆很多年前作项目,有专家指导团队要求所有SQL代码全部转为存储过程----一方面安全性,另1方面速度理论要快

现在我当前环境确实是并发量大的应用,我觉得对于单条插入 删除 修改等操作可以不用
但是类似 SQL我觉得还是应该用存储过程 (现在我不知道mysql的内部机智)

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:642
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:369
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:89
php微信接口教程 发布:2025-04-16 17:07:30 浏览:312
android实现阴影 发布:2025-04-16 16:50:08 浏览:795
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:348
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:819
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:369
土压缩的本质 发布:2025-04-16 16:13:21 浏览:596