2014-01-10 6 views
1

내 쿼리가 실행되어 값을 반환하고 동일한 프로 시저에서 반환 값을 사용해야합니다. 어떻게 사용합니까?mysql은 동일한 프로 시저에서 반환 값을 사용합니다.

내 코드는 내가 조건에 @xcount를 사용할 필요가 여기

set @table_name_count = CONCAT('SELECT COUNT(*) into @xcount ', CONCAT(' FROM ') , concat(table_name),concat(' where issueNumber=',concat('30030'),concat(' and ISSNcode='),CONCAT('112640402'))); 

    PREPARE statement from @table_name_count; 
    EXECUTE statement; 
    DEALLOCATE PREPARE statement; 
    select 'hello4' from dual; 
    IF xcount > 0 and xcount<>NULL THEN 
     DELETE from table_name where issueNumber='30030' and ISSNcode='112640402' ; 
    END IF ; 

입니다

IF xcount > 0 and xcount<>NULL THEN 
    DELETE from table_name where issueNumber='30030' and ISSNcode='112640402' ; 
END IF ; 

답변

1

당신이 사용자와 상대하고 있기 때문에 당신은 그냥 변수 이름 앞에 @을 잊었 (세션) 변수. 귀하의 IF 문은 당신은 항상 값을 반환 NULLCOUNT() 때문에 확인하지 않아도이

IF @xcount > 0 THEN 
^

좋아한다.

여기 데모

이제

DELETE을 실행하기 전에 레코드 (들)의 존재에 대한 이러한 검사를 만드는 아무 소용이없는 SQLFiddle입니다. WHERE 절에 조건과 일치하는 행이 없으면 아무 것도 수행하지 않으며 오류가 발생하지 않습니다.

따라서 DELETE 문을 제외한 모든 코드를 삭제할 수 있습니다.

+0

감사합니다. 잘 작동합니다. – user1703145

관련 문제