为什么我的游标写了,调试也是没有问题,但是就是无法更新数据库的数据信息。请问我哪里写错了?


DECLARE @CardID  NVARCHAR(32)
    DECLARE @CustomerID  NVARCHAR(32)
    DECLARE @Gender   NVARCHAR(32)
    DECLARE @CustomerType      NVARCHAR(32)
    DECLARE @CardType     NVARCHAR(32)
    DECLARE @CertificateType NVARCHAR(32)
    DECLARE @Sex INT
    DECLARE Cursor_CarLess CURSOR FOR
    (select CustomerID,CardID
    FROM dbo.T_CustomerInfo WHERE ISNULL(CardID,'') <> '' AND CustomerType='个人' AND CertificateType='身份证' AND ISNULL(Gender,'') = '')--查询出需要的集合放到游标中
    OPEN Cursor_CarLess
    FETCH NEXT FROM Cursor_CarLess INTO  @CustomerID,@CardID; --抓取下一行游标数据
    WHILE @@FETCH_STATUS = 0
        BEGIN
            IF LEN(@CardID) = 18
            BEGIN
                SET @Sex = CASE WHEN PATINDEX('%[^0-9]%', SUBSTRING(@CardID,17,1)) = 0 THEN SUBSTRING(@CardID,17,1) ELSE NULL END
            END
            ELSE IF LEN(@CardID) = 15
            BEGIN
                SET @Sex = SUBSTRING(@CardID,15,1)
            END
            
            IF @Sex IS NOT NULL
            BEGIN
                IF @Sex%2=0
                SET @Gender='女'
                ELSE IF @Sex%2=1
                SET @Gender='男'
            END
            
            --UPDATE dbo.T_CustomerInfo SET Gender=@Gender where CustomerID=@CustomerID; --更新数据

            PRINT @Gender+'  '+@CustomerID;

            FETCH NEXT FROM Cursor_CarLess INTO @CustomerID,@CardID;--抓取下一行游标数据
        END

    CLOSE Cursor_CarLess; --关闭游标
    DEALLOCATE Cursor_CarLess; --释放游标