第一篇:存储过程的优缺点个人总结
优点
1.在生产环境下,可以通过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器。但这一点便利被许多人滥用了。有人直接就在正式服务器上修改存储过程,而没有经过完整的测试,后果非常严重。
2.执行速度快。存储过程经过编译之后会比单独一条一条执行要快。但这个效率真是没太大影响。如果是要做大数据量的导入、同步,我们可以用其它手段。
3.减少网络传输。存储过程直接就在数据库服务器上跑,所有的数据访问都在服务器内部进行,不需要传输数据到其它终端。但我们的应付服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。
4.能够解决presentation与数据之间的差异,说得文艺青年点就是解决OO模型与二维数据持久化之间的阻抗。领域模型和数据模型的设计可能不是同一个人(一个是SA,另一个是DBA),两者的分歧可能会很大——这不奇怪,一个是以OO的思想来设计,一个是结构化的数据来设计,大家互不妥协——你说为了软件的弹性必须这么设计,他说为了效率必须那样设计,为了抹平鸿沟,就用存储过程来做数据存储的逻辑映射(把属性映射到字段)。好吧,台下已经有同学在叨咕ORM了。
5.方便DBA优化。所有的SQL集中在一个地方,DBA会很高兴。这一点算是ORM的软肋。不过按照CQRS框架的思想,查询是用存储过程还是ORM,还真不是问题——DBA对数据库的优化,ORM一样会受益。况且放在ORM中还能用二级缓存,有些时候效率还会更高。
缺点
1.SQL本身是一种结构化查询语言,加上了一些控制(赋值、循环和异常处理等),但不是OO的,本质上还是过程化的,面对复杂的业务逻辑,过程化的处理会很吃力。这一点算致命伤。
2.不便于调试。基本上没有较好的调试器,很多时候是用print来调试,但用这种方法调试长达数百行的存储过程简直是噩梦。好吧,这一点不算啥,C#/java一样能写出噩梦般的代码。
3.没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。
4.无法适应数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。
5.精通SQL的新手越来越少——不要笑,这是真的,我面试过N多新人,都不知道如何创建全局临时表、不知道having、不知道聚集索引和非聚集索引,更别提游标和提交叉表查询了。好吧,这个缺点算是凑数用的,作为屌丝程序员,我们的口号是:没有不会的,只有不用的。除了少数有语言洁癖的人,我相信精通SQL只是时间问题。
总结
存储过程最大的优点是部署的方便性——可以在生产环境下直接修改——虽然滥用的后果很严重。
存储过程最大的缺点是SQL语言本身的局限性——我们不应该用存储过程处理复杂的业务逻辑——让SQL回归它“结构化查询语言”的功用吧。
第二篇:存储过程中的优缺点个人总结
存储过程中的优缺点个人总结
公司的系统是自主开发的,历史比较悠久,有不少是传统C/S架构,采用存储过程来处理业务逻辑。
近来做新系统的时候,我采用了三层架构,抛弃存储过程改用ORM。有同事问及不用存储过程的理由,我想了一下,对存储过程做了如下总结。本人经验和水平有限,总结有所偏颇,还请大家纠察。
优点
1.在生产环境下,可以通过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器。但这一点便利被许多人滥用了。有人直接就在正式服务器上修改存储过程,而没有经过完整的测试,后果非常严重。
2.执行速度快。存储过程经过编译之后会比单独一条一条执行要快。但这个效率真是没太大影响。如果是要做大数据量的导入、同步,我们可以用其它手段。
3.减少网络传输。存储过程直接就在数据库服务器上跑,所有的数据访问都在服务器内部进行,不需要传输数据到其它终端。但我们的应付服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。
4.能够解决presentation与数据之间的差异,说得文艺青年点就是解决OO模型与二维数据持久化之间的阻抗。领域模型和数据模型的设计可能不是同一个人(一个是SA,另一个是DBA),两者的分歧可能会很大——这不奇怪,一个是以OO的思想来设计,一个是结构化的数据来设计,大家互不妥协——你说为了软件的弹性必须这么设计,他说为了效率必须那样设计,为了抹平鸿沟,就用存储过程来做数据存储的逻辑映射(把属性映射到字段)。好吧,台下已经有同学在叨咕ORM了。
5.方便DBA优化。所有的SQL集中在一个地方,DBA会很高兴。这一点算是ORM的软肋。不过按照CQRS框架的思想,查询是用存储过程还是ORM,还真不是问题——DBA对数据库的优化,ORM一样会受益。况且放在ORM中还能用二级缓存,有些时候效率还会更高。
缺点
1.SQL本身是一种结构化查询语言,加上了一些控制(赋值、循环和异常处理等),但不是OO的,本质上还是过程化的,面对复杂的业务逻辑,过程化的处理会很吃力。这一点算致命伤。
2.不便于调试。基本上没有较好的调试器,很多时候是用print来调试,但用这种方法调试长达数百行的存储过程简直是噩梦。好吧,这一点不算啥,C#/java一样能写出噩梦般的代码。3.没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。
4.无法适应数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。
5.精通SQL的新手越来越少——不要笑,这是真的,我面试过N多新人,都不知道如何创建全局临时表、不知道having、不知道聚集索引和非聚集索引,更别提游标和提交叉表查询了。好吧,这个缺点算是凑数用的,作为屌丝程序员,我们的口号是:没有不会的,只有不用的。除了少数有语言洁癖的人,我相信精通SQL只是时间问题。总结
存储过程最大的优点是部署的方便性——可以在生产环境下直接修改——虽然滥用的后果很严重。
存储过程最大的缺点是SQL语言本身的局限性——我们不应该用存储过程处理复杂的业务逻辑——让SQL回归它“结构化查询语言”的功用吧。
第三篇:mysql 5.0存储过程学习总结
mysql 5.0存储过程学习总结
一.创建存储过程 1.基本语法:
create procedure sp_name()begin end 2.参数传递
二.调用存储过程
1.基本语法:call sp_name()注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
三.删除存储过程 1.基本语法:
drop procedure sp_name// 2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.区块,条件,循环 1.区块定义,常用 begin end;也可以给区块起别名,如: lable:begin end lable;可以用leave lable;跳出区块,执行区块以后的代码
2.条件语句 3.循环语句 :while循环 loop循环 repeat until循环 repeat until循环
五.其他常用命令
1.show procedure status 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等 2.show create procedure sp_name 显示某一个存储过程的详细信息
mysql存储过程基本函数
一.字符串类
CHARSET(str)//返回字串字符集 CONCAT(string2 [,...])//连接字串
INSTR(string ,substring)//返回substring首次在string中出现的位置,不存在返回0 LCASE(string2)//转换成小写
LEFT(string2 ,length)//从string2中的左边起取length个字符 LENGTH(string)//string长度
一起推论坛
一起推论坛www.xiexiebang.com
第四篇:课题:SQLServer存储过程返回值总结
SQLServer存储过程返回值总结
1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)
用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况
(1)假如通过查询分析器执行该存储过程,在显示栏中假如有影响的行数,则影响几行count就是几
(2)假如通过查询分析器执行该存储过程,在显示栏中假如显示'命令已成功完成。'则count =-1;在显示栏中假如有查询结果,则count =-1
总结:A.ExecuteNonQuery()该方法只返回影响的行数,假如没有影响行数,则该方法的返回值只能是-1,不会为0。
B.不论ExecuteNonQuery()方法是按照CommandType.StoredProcedure或者CommandType.Text执行,其效果和A一样。
2.获得存储过程的返回值--通过查询分析器获得
(1)不带任何参数的存储过程(存储过程语句中含有return)
---创建存储过程
CREATE PROCEDURE testReturn
AS
return 145
GO
---执行存储过程
DECLARE @RC int
exec @RC=testReturn
select @RC
---说明
查询结果为145
(2)带输入参数的存储过程(存储过程语句中含有return)
---创建存储过程
create procedure sp_add_table1
@in_name varchar(100), @in_addr varchar(100), @in_tel varchar(100)
as
if(@in_name = '' or @in_name is null)
return 1
else
begin
insert into table1(name,addr,tel)values(@in_name,@in_addr,@in_tel)
return 0
end
---执行存储过程
<1>执行下列,返回1
declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
<2>执行下列,返回0
declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
---说明
查询结果不是0就是1
(3)带输出参数的存储过程(存储过程中可以有return可以没有return)
例子A:
---创建存储过程
create procedure sp_output
@output int output
as
set @output = 121
return 1
---执行存储过程
<1>执行下列,返回121
declare @out int
exec sp_output @out output
select @out
<2>执行下列,返回1
declare @out int
declare @count int exec @count = sp_output @out output
select @count
---说明
有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为return返回的值
例子B:
---创建存储过程
create procedure sp_output
@output int output
as
set @output = 121
---执行存储过程
<1>执行下列,返回121
declare @out int
exec sp_output @out output
select @out
<2>执行下列,返回0
declare @out int
declare @count int
exec @count = sp_output @out output
select @count
---说明
没有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为0
总结:
(1)存储过程共分为3类:
A.返回记录集的存储过程---------------------------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录
B.返回数值的存储过程(也可以称为标量存储过程)-----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令
C.行为存储过程----用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作
(2)含有return的存储过程其返回值为return返回的那个值
(3)没有return的存储过程,不论执行结果有无记录集,其返回值是0
(4)带输出参数的存储过程:假如有return则返回return返回的那个值,假如要select输出参数,则出现输出参数的值,于有无return无关
--------------------3.获得存储过程的返回值--通过程序获得
---------------------------SqlParameter[] cmdParms = {..,new SqlParameter(“@return”,SqlDbType.Int)};cmdParms[cmdParms.Length1].Direction = ParameterDirection.Output或者 cmdParms[cmdParms.Length1].Value;
分类: asp.net
第五篇:个人主要优缺点总结
个人主要优缺点总结
缺点让你弄丢自信,优点让你找回自信。下面是小编整理的个人主要优缺点总结范文,希望对你有所帮助!
优点:
1、我是一个比较实在的年轻人,对要做的事情很执着。
2、不怕吃苦、不怕累、不怕脏。
3、做每件事情都有计划,善于做笔记(我非常喜欢“PDCA”、“轻重缓急”)。
4、自己决定好的事情,我片刻不想停留,直至完成。
5、有责任心,勇于担当。
6、我喜欢和人交往,尊重别人。
7、我是一个很乐观的年轻人,我喜欢帮助别人,这样可以让自己幸福。
8、善于学习身边人的优点。
9、注重思路,在办公室里,我要求自己的办公用品要整齐;在工作安排中,自己负责的事情要条理。
10、遇到问题不等不靠,我会积极的动脑子去解决。
11、喜欢收集和学习管理的知识。
缺点:
1、着急、性子急,做事情急于求成。
2、浮躁,做起事不够沉稳。
3、喜欢吃喝、抽烟,年轻人喝酒不上进,对自己的身体也不负责任。
4、有时候过于自信,认为自己工作安排的很好,就贪睡。
5、在工作中,自己不主动学习外专业的知识。
6、语言表达能力欠缺。
7、组织和管理能力比较弱。
8、网络占用了我晚上学习的时间,所以没能好好利用时间来提高自己。
9、年轻经验不足,导致做某些工作效率低。
优点:
1、做人真诚,做事认真负责。
2、喜欢与人交往,善于组织策划活动和项目。
3、积极务实,敢于主动承担自己的责任。
4、能坚持。确定了正确方向,我就能把所有的力气砸向那个方向。有执行能力。
5、勤奋,善于学习自己感兴趣的知识和事物。做事喜欢列个计划,分出轻重缓急。
缺点:
1、性格方面的弱点,有时给自己压力过大,急于求成,过犹不及。
2、在担任团队领导的时候,涉及到队员的利益的时候,有时为队员考虑的太多,导致做决定的时候会花比较多的时间。
3、不主动锻炼身体,除了和朋友一起打篮球和其他球类运动。
4、工作起来,有时会忘记时间。昨天晚上就很晚睡,大概24:00过的样子,一直忙省分行领导给的20xx届新入行大学生培训电子杂志的工作。
5、在交朋友的时候,喜欢故事经历丰富的朋友,不喜欢朋友没有故事,太平淡。
对未来职业生涯的展望和规划
我,金融学和信息管理与信息系统双学位毕业,对金融有很浓厚的兴趣。我有一个人生目标:做最有影响力的自己。它不是靠哗众取宠能够得来的,而是需要不断提升梦想的高度、拓展心灵的宽度、累积思想的厚度!我相信,我的人生目标在以后的路上会一直影响我的职业生涯。
有了梦想还要有明确的规划,更要有实际的行动。要记住仰望星空,更要在仰望星空的同时看看脚下,从本职做起、从小事做起、从细节做起,不断努力跳跃并尝试触摸自己的梦想。我知道,我们每个人都会分到下边分理处做柜台,我赞同这种安排,我明白,银行中几乎所有的产品都是会通过柜台面向我们的客户,假如没有柜员的锻炼,我相信,把我们分到其他业务岗位,我们很难上手,因为我们少了在柜员岗的锻炼,不熟悉业务和产品。相反,在我们经历了柜员岗的锻炼后,再把我们分到其他岗位上,我相信,那时我们会更加的有自信,也能更好的完成工作。所以,我会珍惜在柜员岗的机会,铆劲提升自身的业务能力,熟练掌握我们的产品。力争做个业务骨干!这是我在柜员岗对自己一个总体要求!
在柜员岗夯实了业务和产品的基础后,我目前的想法是进公司业务部和销售部门(理财和销贷)工作。公司业务部很累,压力很大,很有挑战,我清楚!但我相信自己的做事态度和能力,一定能够胜任!我喜欢与人交往,做人真诚,也很想去销售的部门工作,像理财和销贷部门。这是目前根据我的兴趣,结合自身的优点给自己的未来一段时间的规划。在以后的实际工作中,我会更理性的调整自己,进一步全面发掘自己,找到最适合我的方向,然后努力地朝这个方向、目标前进。在前进的过程中,不断累积自己的知识,提升自己的能力,一如既往的坚持积极务实的工作态度,努力我完善自己的情商。我相信,当有一天,梦想的高度、心灵的宽度,思想的厚度这三围都丰满了的时候,就会成就我的人生目标--做“最有影响力的自己”!
1、做人真诚,做事认真负责。
2、能坚持。确定了正确方向,我就能把所有的力气砸向那个方向。有执行能力。
3、勤奋,善于学习自己感兴趣的知识和事物。做事喜欢列个计划,分出轻重缓急。
4、喜欢与人交往,善于组织策划活动和项目。
5、积极务实,敢于主动承担自己的责任。(励志天下)
个人优缺点总结:缺点
1、不主动锻炼身体,除了和朋友一起打篮球和其他球类运动。
2、工作起来,有时会忘记时间。昨天晚上就很晚睡,大概24:00过的样子,一直忙省分行领导给新入行大学生培训电子杂志的工作。
3、在交朋友的时候,喜欢故事经历丰富的朋友,不喜欢朋友没有故事,太平淡。
4、性格方面的弱点,有时给自己压力过大,急于求成,过犹不及。
5、在担任团队领导的时候,涉及到队员的利益的时候,有时为队员考虑的太多,导致做决定的时候会花比较多的时间。