例如:
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这样的存储过程有没有必要?有没有优势?测试了一下,速度方面似乎没有多大优势(当然都在本机)
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. 可能预编译, 这样不需要每次执行时都去生成执行计划. 如果调用频繁, 你才会感觉到这里的优势2. 数据处理都在服务端完成. 不需要在服务端与客户端频繁的传输中间数据3. 调用简单4. 以后要修改也简单5. 与直接写语句相比, sql语句传输的量也少得多所以一般经常使用的都写成存储过程