首页 > 代码库 > 一种无奈所以另类的开发方式----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~!~!~!