可以使用哪种 SQL 语句准备语句?
实际上,不可能准备所有 SQL 语句,因为 MySQL 仅允许准备以下类型的 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)
INSERT、REPLACE、UPDATE 和 DELETE
修改数据的语句。
示例
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)
广告