13.5.1 PREPARE 구문
PREPARE stmt_name
FROM preparable_stmt
PREPARE
문은 SQL 문을 준비하고 이름 stmt_name
을 할당합니다. 이 이름은 나중에 문을 참조하는 데 사용됩니다. 이 준비된 명령문 EXECUTE
에서 실행되고 DEALLOCATE PREPARE
에서 해방됩니다. 예를 들어, 섹션 13.5 "준비된 문을위한 SQL 구문" 을 참조하십시오.
문 이름은 대소 문자를 구분하지 않습니다. preparable_stmt
는 SQL 문 텍스트가 포함 된 문자열 리터럴 또는 사용자 변수 중 하나입니다. 이 텍스트는 여러 개의 문이 아니라 하나의 문을 표시해야합니다. 이 문은 ?
문자를 나중에 쿼리를 실행할 때 해당 쿼리의 어디에 데이터 값을 바인딩 하는지를 나타내는 파라미터 마커로 사용할 수 있습니다. 문자열 값에 바인딩하려고하는 경우에도 ?
문자를 인용 부호로 둘러싸는 안됩니다. 매개 변수 마커는 SQL 키워드와 식별자 등이 아닌 데이터 값을 지정해야 할 장소 밖에 사용할 수 없습니다.
지정된 이름을 가진 준비된 명령문이 이미 존재하는 경우, 그 문은 새로운 문이 준비되기 전에 암시 적으로 해제됩니다. 즉, 새로운 문에 오류가 포함되어 준비 할 수없는 경우 오류가 반환되고 지정된 이름을 가지는 문은 존재하지 않습니다.
준비된 명령문의 범위는 그 문이 작성된 세션입니다. 여기에는 다음과 같은 몇 가지주의 사항이 있습니다.
세션에서 작성된 준비된 명령문을 다른 세션에서 사용할 수 없습니다.
세션 (정상 및 비정상에 관계없이) 종료하면 준비된 명령문은 존재하지 않습니다. 자동 재 연결이 활성화되어 있으면 클라이언트는 연결이 끊어진 것을 알려 않습니다. 따라서 클라이언트는 자동 재 연결을 해제 할 수 필요할 수 있습니다. 섹션 23.8.16 "자동 재 연결 동작 제어" 를 참조하십시오.
저장 프로그램에서 생성 된 준비된 명령문은 프로그램이 실행을 완료 한 후에도 계속 존재하고 나중에 그 프로그램의 외부에서 실행할 수 있습니다.
저장 프로그램의 맥락에서 준비된 문은 저장 프로 시저 또는 저장 함수의 매개 변수 또는 로컬 변수를 참조 할 수 없습니다. 이들은 해당 프로그램이 종료되면 범위를 벗어난이 문이 나중에 프로그램 외부에서 실행 된 경우에 사용할 수 없기 때문입니다. 해결 방법으로 대신 마찬가지로 세션 범위의 사용자 정의 변수를 참조합니다. 섹션 9.4 "사용자 정의 변수" 를 참조하십시오.