MySQL PREPARE語句用于在存儲過程中動態(tài)準(zhǔn)備和執(zhí)行SQL語句。它的語法如下:
PREPARE statement_name FROM sql_statement;
其中,statement_name
是一個(gè)用戶定義的標(biāo)識符,用于引用準(zhǔn)備好的語句;sql_statement
是要準(zhǔn)備的SQL語句。
PREPARE語句通常與EXECUTE語句一起使用,以執(zhí)行準(zhǔn)備好的語句。EXECUTE語句的語法如下:
EXECUTE statement_name [USING @var1 [, @var2, ...]];
其中,statement_name
是之前準(zhǔn)備好的語句名稱;@var1, @var2, ...
是可選參數(shù),用于傳遞給準(zhǔn)備好的語句的參數(shù)。
以下是一個(gè)示例,展示了如何在存儲過程中使用PREPARE和EXECUTE語句:
DELIMITER //
CREATE PROCEDURE dynamic_query()
BEGIN
DECLARE query VARCHAR(200);
DECLARE param INT;
SET param = 1;
SET query = 'SELECT * FROM my_table WHERE id = ?';
PREPARE stmt FROM query;
EXECUTE stmt USING param;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
在上述示例中,存儲過程dynamic_query
定義了一個(gè)參數(shù)param
和一個(gè)查詢語句query
。通過PREPARE語句,存儲過程將查詢語句準(zhǔn)備好,并通過EXECUTE語句執(zhí)行它。最后,使用DEALLOCATE PREPARE語句釋放已準(zhǔn)備的語句。
注意,PREPARE語句只能在存儲過程中使用,不能在普通的SQL語句中使用。