现在因为业务,有一个sql语句超过了5000个长度,所有回报截断字符串错误,属于sql2008版本,解决办法是使用存储过程,但是这样每一个模块都要加存储过程,有没有什么办法解决
使用存储过程就是一个非常好的解决方法, 可以试试将参数用xml传入, 这样就有了统一调用接口.
但是每一个业务模块都要添加村粗过程了
@灬丶: 每一个业务版快添加存储过程问题不大, 根据实际需要, 有必要的修改, 没必要的不动就好, 我觉得, 大批量涉及数据库数据的逻辑, 使用存储过程/函数等数据库内置的功能比在ORM上写方便多了, 而且后续维护起来比在C#/Java.... 等服务端方便.
我现在大部分存储(CRUD, 包括审批/更改状态.... )都统一调用一个函数(有且只有一个存储过程, 且只使用一个参数就是xml, 你也可以根据需要加一个类别区分更加方便. 且这样子写数据库日志也非常方便). 再根据这个入口读出指定类别后分配给指定的存储过程, 所以, 相当于我在数据库也分了三层结构(BLL, DAL, TABLE). (注: 这个没考虑负载平衡等问题, 某些情况下会加大数据库服务器负荷, 但是, 我相信大部分情况下, 是降低数据库负荷的, 至于取舍, 自己判断) 我觉得中小型公司非常适合这样的处理方式.
@灬丶: 还有, 我目前使用的是BS结构, 所以, 现在大部分情况下, 我只需要维护HTML代码/JS + 存储过程, 中间的服务端代码几乎不用修改. 维护起来非常方便....
不要一次性提交这么长的sql,如果有循环,可以分割批量提交sql,比如100条提交一次。