선배님들께 질문이 있습니다. 테이블에 sfz 필드가 있습니다. 문자 유형의 길이는 18비트로 고정되어 있습니다. 저장 프로세스에서 이 필드를 vsfz에 할당합니다. . 또한 18비트의 고정 길이 문자 유형을 가지고 있습니다.다음 쿼리문을 작성했습니다.select bj from kq201905 where sfz=vsfz;, 이는 올바르게 쿼리될 수 있습니다. 여러 테이블을 쿼리하고 싶기 때문에 변수 루프를 사용하여 테이블 이름을 할당해야 하므로 prepare 문을 사용하여 연결합니다.
set @vsk=concat('select bj from ',vkn,' where sfz=' ,vsfz,';' );
prepare stmt from @vsk;
execute stmt;
deallocate prepare stmt;
실행 후 쿼리 결과가 잘못된 것으로 확인되었습니다. 테이블 이름 변수와는 관련이 없는 것으로 테스트했는데, 이제 where 절에 문제가 있는 것으로 의심됩니다. 이유를 아시는 분은 알려주세요. 감사합니다!