那开发一个大型项目,现在采用的是SQL数据库,我是比较喜欢采用存储过程。但是系统以后可能会移植到其他的数据库上,请问现在是用存储过程好呢还是不用好呢??
现在有点拿不定注意,因为对其他的数据库不是很了解,谁能帮忙解答一下啊??

解决方案 »

  1.   

    以程序的长远发展来看还是需要用存储过程的,如果要移植的话,你写在程序里面的sql一样的要改嘛,一样的道理
      

  2.   

    那是不是其他的数据库一样的支持SQL的存储过程呢??
    那是不支持的话我可以用标准SQL语句啊
      

  3.   

    我觉得也是SPORC封装性比较好,代码层次也比较清晰,便于维护,至于迁徙的话应该由迁徙工具可以用的吧
      

  4.   

    建议所有SQL都写到后端,迁移的话只需要更新后端数据库对象,前端基本不作修改。如果客户端有SQL,到时修改还得改前面,麻烦
      

  5.   

    当然要用存储过程了。
    你不会把数据库变成Access吧,换成orcle的可能性很大,他也是有“存储过程”的,移植一下存储过程不就行了吗。但是要对存储过程做好说明 —— 涉及几个表、有哪些地方那个调用等
      

  6.   

    做个大项目存储过程是肯定要用的。
    但是不是象楼上说得有多少操作就写多少存储过程呢,有待探讨。
    本人觉得简单的数据操作放在前台用SQL实现,复杂的数据操作呢,使用存储过程。
      

  7.   

    那orcle数据库的存储过程跟SQL数据库的存储过程类似吗??
      

  8.   

    如果预知:但是系统以后可能会移植到其他的数据库上
    那么数据访问层不宜使用存储过程(代码复用的好处已不存在)。
    可以后台代码(中间组件)中。
    同时,注意将数据库接口connectstring做好。
      

  9.   

    建议采用存储过程:
    1.执行效率高
    2.能有效防止注入攻击
    3.容易维护如果要移植,建议严格按照SQl的标准语法来写,不要使用非标准的,如Case语句等。
      

  10.   

    对于一个大型系统来说,如果还没有最终确定使用哪种数据库,最好先不要进行下步的编码工作,因为不可能将数据库的性能发挥出来,就算你不写存储过程,但你在编写数据库访问类的时候还是要确定是用ole还是用sqlconnection,写SQL语句时你还要注意SQL和ORACLE里的SQL用法,函数是有少许不同的,如果这些问题留到最后来解决,那是很费脑筋的,请楼主三思!
      

  11.   


    如果确定以后会移植到Oracle,那还是可以写存储过程的,SQLNavigator还是比较好的调试工具;如果其他,个人认为最好不要写存储过程,调试不方便;当然了话说回来了,既然是大型系统,在架构的时候应该会考虑动态配置数据库执行方式吧^_^我建议在项目开发初期最好写SQL语句,待到稳定了,效率确实有问题,再转成存储过程;
    或者只把数据库基本操作写成存储过程(特别是修改、删除操作)。
      

  12.   

    现在确定是要移植到Oracle数据库,那如果写存储过程的话,到时移植困难吗??
      

  13.   

    可以用存储过程写一些比较烦琐的操作
    另一些比较容易的读数据什么的就都写到一个xml  文件里也行啊
      

  14.   

    都不太好,既然以后要移植,肯定是搞个ORM好,我的程序不要移植还搞了个ORM呢,以后肯定用得到。
    如果不愿自己写,微软有个 企业库(Enterprise Library),是个很完整的东西,可以弄过来用用,还有教程
      

  15.   

    能询问一下 SQLSERVER的存储过程和ORACLE,  或者 SYBASE的存储过程区别很大么? 我一直用的是SQLSERVER
      

  16.   

    最好是用存储过程,速度快,安全!!能有效的防止Sql注入!!!
      

  17.   

    最后用存储过程。 
    oracle的PL/SQL 与 SQL Server的TSQL语法不同。 不过,都是数据库, 常用的东西是相通的
      

  18.   

    用存储过程的都是没有做过大项目的一般情况下,绝对不应当考虑用存储过程所有的数据操作都应当在业务层完成,当然对数据的底层操作可以使用封装好的代码或O/Rmapping减少工作量因为中间业务层的能力不够可以通过简单的添加中间层服务器来解决而一旦数据库服务器的能力不够,是很难处理的使用存储过程会加大数据库服务器的负担,所以绝对应当避免只有当万不得已,比方一个过程是在无法忍受得慢时才可以考虑用存储过程
      

  19.   

    “用存储过程的都是没有做过大项目的一般情况下,绝对不应当考虑用存储过程”
    ---------------------
    不同意上面的这种说法,见过很多大项目用存储过程,几个大的ASP.NET开源项目和多层示例都用到了存储过程,你应用需求、并发用户、吞吐量大了用存储过程有很多优势,不止是安全和效率高。
    当然楼主具体采取什么主要看你自己的需要和实际情况了,但如果数据访问负荷比较高还是建议楼主用存储过程,如果一切都很轻量级,用sql也未尝不可。
      

  20.   

    “用存储过程的都是没有做过大项目的一般情况下,绝对不应当考虑用存储过程”
    ---------------------存储过程对数据库服务器的负担大呢?还是SQL语句对数据库服务器的负担大呢?存储过程十预编译的,编译一次就可以了;而SQL每次执行的时候都要编译一遍。而编译并不是一件简单的事情,首先要检查语法是否正确,然后要检查表名、字段名是否正确,还有他们是否是对应的等,然后是对SQL的优化,找出一种最优的一种执行方式。最后才是执行。
    可见SQL对于数据库服务器的压力要更大!
      

  21.   

    用CASE就不标准了吗?我不明白?
      

  22.   

    如果是简单的查询,那么普通SQL和SP是没有太多的差别的因为所有的时间几乎都花在了取数上面,而SQL的编译消耗几乎可以忽略但是实际上大家都是在用SP做那种极其复杂的业务逻辑处理,像这种SP,可以说是数据库服务器的杀手
      

  23.   

    SQLSERVER 的存储过程和ORACLE的存储过程还是有比较大的区别.特别是返回记录集要多写很多代码.