首页 > 解决方案 > IS NULL 和 IS NOT NULL 在存储过程中被忽略

问题描述

我正在尝试执行存储过程,但存储过程中 IS NOT NULL 的查询被忽略。这只发生在存储过程中......当我尝试只执行查询时,按预期工作。为什么会这样?

CREATE PROCEDURE `register_customer`(
    IN IDENTIFICATION_ VARCHAR(45),
    IN PHONENUM_ VARCHAR(20),
    IN TAC_ VARCHAR(6)
)
BEGIN

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET @dummyVar := 1;
    
    DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
    BEGIN
        GET DIAGNOSTICS CONDITION 1 @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT;
        select 0 as procStatus, @p2 as procMsg;
        ROLLBACK;
    END;
    
    SET autocommit=0;
    
    MyScope:BEGIN
        set @err := '';
        
        START TRANSACTION;
        
            #set @systemActivities := ACTIVITYDETAILS_;
            
            #filter
            SET @custLoginID := (SELECT id FROM customer_login WHERE identification = IDENTIFICATION_ and phonenum=PHONENUM_);
            if @custLoginID is not null then
                set @err := 'Customer Exist';
                LEAVE MyScope;
            end if;
            
            SET @tacid := (SELECT id FROM tac WHERE phonenum=PHONENUM_ AND tac=TAC_ AND verified IS NOT null);
            if @tacid is null then
                set @tacid := 'Not Verified';
                LEAVE MyScope;
            end if;
            
        COMMIT;
    END;
    
    SET autocommit=1;
    
    if @err != '' then
        select 0 as procStatus, @err as errorDesc;
    else
        select 1 as procStatus , @tacid as tacId;
    end if;

END

标签: mysqlstored-procedures

解决方案


推荐阅读