우리가 알고 있듯이 MySQL 사용자 변수는 사용되는 클라이언트 연결에 따라 다르며 해당 연결 기간 동안에만 존재합니다. 연결이 끝나면 모든 사용자 변수가 손실됩니다. 유사하게, 준비된 명령문은 생성된 세션 기간 동안에만 존재하며 생성된 세션에서 볼 수 있습니다. 세션이 종료되면 해당 세션에 대해 준비된 모든 명령문이 삭제됩니다.
또 다른 유사점은 준비된 명령문도 MySQL 사용자 변수처럼 대소문자를 구분하지 않는다는 것입니다. 예를 들어, stmt11 및 STMT11은 모두 다음 예에 표시된 것과 동일합니다. -
mysql> Select * from student; +------+-------+ | Id | Name | +------+-------+ | 1 | Ram | | 2 | Shyam | | 3 | Rohan | +------+-------+ 3 rows in set (0.00 sec) mysql> SET @A = 'Sohan', @B = 3; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE Stmt11 USING @A, @B; Query OK, 1 row affected (0.12 sec) mysql> Select * from Student; +------+-------+ | Id | Name | +------+-------+ | 1 | Ram | | 2 | Shyam | | 3 | Sohan | +------+-------+ 3 rows in set (0.00 sec) mysql> SET @A = 'Gaurav', @B = 3; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE STMT11 USING @A, @B; Query OK, 1 row affected (0.04 sec) mysql> Select * from Student; +------+--------+ | Id | Name | +------+--------+ | 1 | Ram | | 2 | Shyam | | 3 | Gaurav | +------+--------+ 3 rows in set (0.00 sec)
위의 예에서 stmt11을 실행하고 다음에 STMT11을 실행했는데 준비된 명령문이 대소문자를 구분하지 않기 때문에 둘 다 동일하게 작동했습니다.