CREATE PROCEDURE PROC_INSERTREC_TRANSRECORDHIS
AS
BEGINdeclare @CurrentTime CHAR(14)
@CurrentTime = CAST(DATEADD(day, -30, GetDate())AS CHAR)INSERT INTO YW_TRANSRECORD_HIS
(
BEGINTIME,DEVICEID,TRANSBEGIN,TRANSCODE,TSOURCE,ZONECODE,
AGENTID,GRANT_NO,CALL_ID,RETURNCODE,RETURNMESSAGE 
)
SELECT 
BEGINTIME,DEVICEID,TRANSBEGIN,TRANSCODE,TSOURCE,ZONECODE,
AGENTID,GRANT_NO,CALL_ID,RETURNCODE,RETURNMESSAGE 
FROM YW_TRANSRECORD 
WHERE BEGINTIME < @CurrentTimeDELETE BEGINTIME,DEVICEID,TRANSBEGIN,TRANSCODE,TSOURCE,ZONECODE,AGENTID,GRANT_NO,CALL_ID,RETURNCODE,RETURNMESSAGE 
FROM YW_TRANSRECORD
WHERE BEGINTIME < @CurrentTimeEND这个存储过程的主要目的是将YW_TRANSRECORD中的30天以前的记录导入到历史表YW_TRANSRECORD_HIS中,然后把YW_TRANSRECORD
中的对应记录删除,哪位大虾帮我看一下上面这个存储过程哪里出了问题,谢谢!

解决方案 »

  1.   

    DELETE BEGINTIME,DEVICEID,TRANSBEGIN,TRANSCODE,TSOURCE,ZONECODE,AGENTID,GRANT_NO,CALL_ID,RETURNCODE,RETURNMESSAGE 
    FROM YW_TRANSRECORD 
    WHERE BEGINTIME < @CurrentTime改为
    DELETE FROM YW_TRANSRECORD WHERE BEGINTIME < @CurrentTime
      

  2.   

    CREATE PROCEDURE PROC_INSERTREC_TRANSRECORDHIS
    @days int
    AS
    BEGIN
    --插入
    INSERT INTO YW_TRANSRECORD_HIS
    (BEGINTIME,DEVICEID,TRANSBEGIN,TRANSCODE,TSOURCE,ZONECODE,AGENTID,GRANT_NO,CALL_ID,RETURNCODE,RETURNMESSAGE)
    SELECT BEGINTIME,DEVICEID,TRANSBEGIN,TRANSCODE,TSOURCE,ZONECODE,AGENTID,GRANT_NO,CALL_ID,RETURNCODE,RETURNMESSAGE
    FROM YW_TRANSRECORD WHERE datediff(dd,BEGINTIME,getdate())>@days
    --删除
    DELETE YW_TRANSRECORD WHERE datediff(dd,BEGINTIME,getdate())>@days
    END --执行方法,30天以上的插入历史,删除记录
    exec PROC_INSERTREC_TRANSRECORDHIS 30--30可用变量