首页 > 代码库 > 一种无奈所以另类的开发方式----SQL很强大!
一种无奈所以另类的开发方式----SQL很强大!
好久没写点什么了。。。
多年前。。。。。。
前些时间,与一多年前在北京共事过的略带亲戚关系的同事闲聊了会。
在北京那时,他们的主要是用Delphi语言,数据库是MSSqlServer。
他没有大学学历,甚至好像高中学历都没有,成长过程比较励志,工厂流水线、理发师、卖东西神马的都干过!!!
他是公司的主程,负责某行业管理软件、呼叫中心等系统,最让我佩服的,是他对MSSqlServer的熟悉程度,对我而言,膜拜之也并不过分。
===============================================================================
现状
听他说,他们现在做B/S时,已经在用.Net了,多年前,也听他们提过,说想转到C#。
不过,当聊到开发方式时,我却震惊了:因为对C#还不是很熟悉,所以,所有的CURD、所有的业务逻辑,通通用存储过程来实现。C#没有业务逻辑,各种数据操作都调用存储过程来实现。
顺便贴了一个存储过程给我,只是一个删数据的存储过程。
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N‘[dbo].[up_DeleteTravelLineType]‘) AND type in (N‘P‘, N‘PC‘))DROP PROCEDURE [dbo].[up_DeleteTravelLineType]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO/* =============================================-- Author: LSH-- Create date: 2013-12-31-- Description: 线路类型,(暂时不允许删除有线路的类型)当存在下属从表数据时,如果 @DeleteChild = 1 则删除下属信息,否则,返回 50005 错误码。-- 调用示例DECLARE @ErrCode int, @ReturnMsg nvarchar(256)SET @=0;EXEC @ErrCode = up_DeleteTravelLineType @Code = NULL, @DeleteChild = 0, @Operator = ‘‘, @ReturnMsg = @ReturnMsg output, @Language = ‘简体中文‘ IF @ErrCode = 0 SELECT * FROM OperationLog WHERE LogType = ‘TravelLineType‘ AND KeyValue = http://www.mamicode.com/@>
好吧,虽然自己简历上也写着熟悉MSSqlServer(存储过程、触发器、视图、游标、索引),但看到这存储过程,真心能感受到差距。。。
看法不一致
虽然佩服他的Sql,但我并不推崇这种开发方式,甚至抵触。
但他们也是无奈,要实现功能,对C#又不太熟,对精通SQL的他来说,这样的开发方式耗时最短,性能最高。
简单谈下自己对这个的看法吧:
优点:
1、对他来说,这可能是最合适最快速的开发方式。
2、在符合某些前提(如访问量不大)的情况,确实性能最高。
3、一次操作只连接一次数据库。
4、直接操作数据,没有转换为对象的操作,没有生成SQL语句的操作。
5、更改方便,只需改存储过程,无需编译发布。
6、大大减轻Web服务器的压力(将就着算优点吧)。
缺点就太明显了:
1、只适合小项目。
2、可读性、可维护性、可扩展性。
。。。。。。
好吧,这两点,足够了。。。
Over~!~!~!