Mybatis - mssql 存储过程调用

mybatis

<update id="callDataSelfCheck_Win_MSSQL" parameterType="java.util.HashMap" statementType="CALLABLE">
    {
      call DATA_SELF_CHECK()
    }
</update>

mssql

ALTER PROCEDURE [dbo].[DATA_SELF_CHECK] 
AS
BEGIN
    DECLARE @POST_THEME_SNO VARCHAR(10), @SELF_CHECK_SNO NUMERIC(9), @POST_TABLE VARCHAR(256), @ERROR_INFO VARCHAR(1024), @CHECK_CONDITION  VARCHAR(2048)
    --清除当天的记录
    DELETE SELF_CHECK_RESULT WHERE CREATE_DATE = CONVERT(VARCHAR(8), GETDATE(), 112)

    --通过POST_THEME表和SELF_CHECK_CFG表循环遍历自检设置条件
    DECLARE ROW_CURSOR CURSOR FOR SELECT T.POST_THEME_SNO, C.SELF_CHECK_SNO, C.POST_TABLE, C.ERROR_INFO, C.CHECK_CONDITION
        FROM POST_THEME T, SELF_CHECK_CFG C
        WHERE T.POST_THEME_SNO = C.POST_THEME_SNO AND T.POST_THEME_STA = 1 AND C.SETUP_STATUS = 1
    OPEN ROW_CURSOR
    FETCH NEXT FROM ROW_CURSOR INTO @POST_THEME_SNO, @SELF_CHECK_SNO, @POST_TABLE, @ERROR_INFO, @CHECK_CONDITION
    WHILE @@FETCH_STATUS = 0
    BEGIN
        --通过动态表@POST_TABLE(如:GPZY_INFO_TASK、YDGH_INF_TASK、ORG_USER_BASIC_INFO_TASK等)循环遍历流水表中的RECORD_SNO字段
        DECLARE @SQL VARCHAR(2048), @RECORD_SNO NUMERIC(9)
        --对输入串进行截取处理
        DECLARE @FIRCONDITION VARCHAR(2048),@LASCONDITION VARCHAR(2048),@KEY VARCHAR(64),@POSITION INT
        SET @KEY = ' WHERE '
        SELECT @POSITION = CHARINDEX(@KEY,@CHECK_CONDITION)
        SELECT @FIRCONDITION = LEFT(@CHECK_CONDITION,@POSITION+LEN(@KEY)-1)
        SELECT @LASCONDITION = RIGHT(@CHECK_CONDITION,LEN(@CHECK_CONDITION)-@POSITION-LEN(@KEY))
        SET @SQL = 'DECLARE ROW_TASK CURSOR FOR SELECT RECORD_SNO '+@FIRCONDITION+' (' +@LASCONDITION+') AND CREATE_DATE = CONVERT(VARCHAR(8), GETDATE(), 112)';
        PRINT(@SQL)
        EXEC(@SQL)
        OPEN ROW_TASK
        FETCH NEXT FROM ROW_TASK INTO @RECORD_SNO
        WHILE @@FETCH_STATUS = 0
        BEGIN
            INSERT INTO SELF_CHECK_RESULT(POST_THEME_SNO, SELF_CHECK_SNO, TASK_SNO, ERROR_INFO, CREATE_DATE) VALUES(@POST_THEME_SNO, @SELF_CHECK_SNO, @RECORD_SNO, @ERROR_INFO, CONVERT(VARCHAR(8), GETDATE(), 112))
            FETCH NEXT FROM ROW_TASK INTO @RECORD_SNO
        END
        CLOSE ROW_TASK
        DEALLOCATE ROW_TASK

        FETCH NEXT FROM ROW_CURSOR INTO @POST_THEME_SNO, @SELF_CHECK_SNO, @POST_TABLE, @ER
GO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值