mysql存储过程中使用动态SQL

    科技2026-01-29  8

    1.简介

     

    mysql存储过程可以使用预编译语句的方式来使用动态SQL,主要就是将SQL字符串预编译为statement,然后执行次语句:

    SET @sql = sql PREPARE stmt_name FROM @sql; EXECUTE stmt_name; {DEALLOCATE | DROP} PREPARE stmt_name; SET @sql:设置SQL字符串变量,一般为用户变量,即前面带有@的变量 PREPARE stmt_name FROM @sql:预编译SQL字符串为语句 EXECUTE stmt_name:执行预编译后的语句 DEALLOCATE PREPARE stmt_name:释放预编译后的语句,释放资源,也可以使用DROP

     

    2.简单示例

     

    CREATE DEFINER=`root`@`localhost` PROCEDURE `dynamic_sql_test`() BEGIN set @sql = "SELECT user.id, user.username, user.birthday FROM user;"; prepare statement_user_select_all from @sql; execute statement_user_select_all; deallocate prepare statement_user_select_all; END <
    Processed: 0.015, SQL: 10