MySQL - EXECUTE 语句
MySQL 中的预处理语句表示预编译语句。语句会被编译并存储在预处理语句中,之后您可以多次执行该语句。我们向该语句传递的是占位符,而不是值。
如果您想执行多个相同的查询(仅值不同),可以使用预处理语句。您可以在客户端库以及 SQL 脚本中执行这些语句。
SQL 预处理语句基于三个语句,即 -
- PREPARE
- EXECUTE
- DEALLOCATE PREPARE
MySQL EXECUTE 语句
EXECUTE 语句/命令用于执行预处理语句。
语法
以下是 EXECUTE 语句的语法 -
EXECUTE stmt_name [USING @var_name [, @var_name] ...]
其中 stmt_name 是要执行的预处理语句的名称执行。
示例
假设我们使用 CREATE 语句在数据库中创建了一个名为 Employee 的表,并在其中插入了三条记录,如下所示 -
CREATE TABLE Employee( Name VARCHAR(255), Salary INT, Location VARCHAR(255) );
您可以使用占位符代替值来准备 INSERT 语句,如下所示:-
PREPARE prepared_stmt FROM 'INSERT INTO EMPLOYE VALUES (?, ?, ?)'; Statement prepared
准备好语句后,您需要按如下方式设置占位符的值:-
SET @name = 'Raghu'; SET @sal = 9878; SET @loc = 'Delhi';
以下查询执行上面创建的预处理语句 -
EXECUTE prepared_stmt USING @name, @sal, @loc;
验证
执行预处理语句后,如果验证员工表的内容,则可以观察到新插入的行 -
SELECT * FROM EMPLOYEE;
输出
以下是上述程序的输出 -
Name | Salary | Location |
---|---|---|
Amit | 6554 | Hyderabad |
Sumith | 5981 | Vishakhapatnam |
Sudha | 7887 | Vijayawada |
Raghu | 9878 | Delhi |
示例
如果不需要变量,我们也可以省略变量来执行准备好的语句。-
--Preparing the statement PREPARE prepared_stmt FROM 'SELECT * FROM EMPLOYE'; Statement prepared --Executing the statement EXECUTE prepared_stmt;
输出
上述 mysql 查询生成以下输出 -
Name | Salary | Location |
---|---|---|
Amit | 6554 | Hyderabad |
Sumith | 5981 | Vishakhapatnam |
Sudha | 7887 | Vijayawada |
Raghu | 9878 | Delhi |
示例
假设我们创建了另一个表,并使用以下查询填充它 -
Create table Student(Name Varchar(35), age INT, Score INT); INSERT INTO student values ('Jeevan', 22, 8); INSERT INTO student values ('Raghav', 26, 3); INSERT INTO student values ('Khaleel', 21, 9); INSERT INTO student values ('Deva', 30, 9);
您可以选择表来使用此语句动态执行查询,如下所示 -
--Setting the table name dynamically SET @table = 'Student'; SET @statement = CONCAT('SELECT * FROM ', @table); --Preparing the statement PREPARE prepared_stmt FROM @statement; Statement prepared --Executing the statement
输出
上述查询产生如下所示的输出 -
Name | age | Score |
---|---|---|
Jeevan | 22 | 8 |
Raghav | 26 | -3 |
Khaleel | 21 | -9 |
Deva | 30 | 9 |