例如:
CREATE PROCEDURE GetSChkTgs_SP
@Date datetime,
@Op smallint,
@Max int
AS
DECLARE @NextDay datetime
SET @NextDay=DATEADD(DAY,1,@Date)SELECT C.cfmID,C.cfmer,T.tgID,T.tgNo,T.EditTime1,O.orgName,T.tgType,T.Content,T.CharNum1,T.CharNum2,T.State 
   FROM tb_STgChkRec C JOIN tb_TgSend T ON C.tgID=T.tgID 
   LEFT JOIN tb_Orgs O ON T.orgID=O.orgID 
    WHERE C.chkID=0 AND C.cfmer=@Op AND C.CfmTime>=@Date AND C.CfmTime<@NextDay AND T.Deleted=0 AND C.cfmID>@Max
GO这样的存储过程有没有必要?有没有优势?测试了一下,速度方面似乎没有多大优势(当然都在本机)

解决方案 »

  1.   

    参数都是Int,SmallInt,Datetime,好像不涉及安全性问题,而且只是查询
      

  2.   

    你前端传过来的SQL语句到数据库这里要进行编译解析的,放到存储过程中就少了编译的步骤,同时网络的传输量就小了, GetSChkTgs_SP "","","" 要比你后面一大段少很多数据把,经常被使用频率较高的还是建议使用存储过程
      

  3.   

    存储过程的潜台词是:
    1. 可能预编译, 这样不需要每次执行时都去生成执行计划. 如果调用频繁, 你才会感觉到这里的优势2. 数据处理都在服务端完成. 不需要在服务端与客户端频繁的传输中间数据3. 调用简单4. 以后要修改也简单5. 与直接写语句相比, sql语句传输的量也少得多所以一般经常使用的都写成存储过程