首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作数类型冲突:日期与PRINT语句中的int with variable不兼容

操作数类型冲突:日期与PRINT语句中的int with variable不兼容
EN

Stack Overflow用户
提问于 2017-11-22 05:18:29
回答 1查看 363关注 0票数 0

我正在尝试在MS sql server中创建触发器,但我一直收到“操作数类型冲突:日期与整型不兼容”错误。我认为错误来自于我的PRINT语句,但我对sql还不够精通,不知道如何克服这个问题。

代码语言:javascript
复制
ALTER TRIGGER utrInsteadUpdateTblMembership
ON tblMembership INSTEAD OF UPDATE
AS
BEGIN
    DECLARE @newPayDate date, @prevPayDate Date, @prevMemberNumber int

    Select @newPayDate = MembershipFeePaidDate FROM inserted
    Select @prevPayDate = MembershipFeePaidDate FROM deleted
    Select @prevMemberNumber = MembershipID FROM deleted 


    IF @prevPayDate IS NOT NULL AND @prevPayDate > @newPayDate
        BEGIN 
            UPDATE tblMembership 
                SET MembershipFeePaidDate = @newPayDate 
                WHERE @prevMemberNumber = MembershipID 
            UPDATE tblMembership 
                SET isCurrentMember = 1
                WHERE @prevMemberNumber = MembershipID 
            PRINT 'Membership Number ' + @prevMemberNumber + ':' + ' payment date is ' + @newPayDate + ';' + ' prior payment date is ' + @prevPayDate
        END
    ELSE
        BEGIN
            PRINT 'Membership Number ' + @prevMemberNumber + ':' + ' new payment date ' + @newPayDate + ' is earlier than prior payment date ' + @newPayDate +';' + 'No change made' 
        END
END
EN

回答 1

Stack Overflow用户

发布于 2017-11-22 05:20:55

这是因为它将其解释为加法与拼接。这同样适用于动态SQL

代码语言:javascript
复制
 PRINT 'Membership Number ' + cast(@prevMemberNumber as char(8)) + ':' + ' new payment date ' + convert(varchar(10),@newPayDate,101) + ' is earlier than prior payment date ' + convert(varchar(10),@newPayDate,101) +';' + 'No change made'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47422906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档