사실, MySQL은 준비할 수 있는 다음 종류의 SQL 문만 허용하기 때문에 모든 SQL 문을 준비할 수는 없습니다.
SELECT 문
예시
mysql> PREPARE stmt FROM 'SELECT tender_value from Tender WHERE Companyname = ?'; Query OK, 0 rows affected (0.09 sec) Statement prepared mysql> SET @A = 'Singla Group.'; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE stmt using @A; +--------------+ | tender_value | +--------------+ | 220.255997 | +--------------+ 1 row in set (0.07 sec) mysql> DEALLOCATE PREPARE stmt; Query OK, 0 rows affected (0.00 sec)
삽입, 교체, 업데이트 및 삭제
데이터를 수정하는 명령문.
예시
mysql> PREPARE stmt1 FROM 'DELETE from Tender WHERE Sr = ?'; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql> SET @A = 4; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE stmt1; ERROR 1210 (HY000): Unknown error 1210 mysql> EXECUTE stmt1 using @A; Query OK, 1 row affected (0.08 sec) mysql> DEALLOCATE PREPARE stmt1; Query OK, 0 rows affected (0.00 sec) mysql> Select * from tender; +----+---------------+--------------+ | Sr | CompanyName | Tender_value | +----+---------------+--------------+ | 1 | Abc Corp. | 250.369003 | | 2 | Khaitan Corp. | 265.588989 | | 3 | Singla group. | 220.255997 | +----+---------------+--------------+ 3 rows in set (0.00 sec)
CREATE TABLE 문.
예시
mysql> PREPARE stmt3 FROM 'CREATE TABLE Student(Id INT, Name Varchar(20))'; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql> EXECUTE stmt3; Query OK, 0 rows affected (0.73 sec) mysql> DEALLOCATE PREPARE stmt3; Query OK, 0 rows affected (0.00 sec)
SET, DO 및 많은 SHOW 문
예시
mysql> PREPARE stmt10 FROM 'SHOW TABLES'; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql> EXECUTE stmt10; +-------------------+ | Tables_in_query | +-------------------+ | emp | | emp123 | | emp_t | | examination_btech | | new_number | | student | | student_detail | | student_info | | tender | | website | +-------------------+ 10 rows in set (0.00 sec)