如何在 MySQL 存储过程中使用动态 SQL

How To have Dynamic SQL in MySQL Stored Procedure(如何在 MySQL 存储过程中使用动态 SQL)
本文介绍了如何在 MySQL 存储过程中使用动态 SQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 MySQL 存储过程中构建和使用动态 sql?

How do you build and use dynamic sql in a MySQL stored procedure?

推荐答案

我不相信 MySQL 支持动态 sql.你可以做准备"类似但不同的陈述.

I don't believe MySQL supports dynamic sql. You can do "prepared" statements which is similar, but different.

这是一个例子:

mysql> PREPARE stmt FROM 
    -> 'select count(*) 
    -> from information_schema.schemata 
    -> where schema_name = ? or schema_name = ?'
;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE stmt 
    -> USING @schema1,@schema2
+----------+
| count(*) |
+----------+
|        2 |
+----------+
1 row in set (0.00 sec)
mysql> DEALLOCATE PREPARE stmt;

准备好的语句通常用于查看给定查询的执行计划.由于它们是使用 execute 命令执行的,并且可以将 sql 分配给一个变量,因此您可以近似一些与动态 sql 相同的行为.

The prepared statements are often used to see an execution plan for a given query. Since they are executed with the execute command and the sql can be assigned to a variable you can approximate the some of the same behavior as dynamic sql.

这是一个很好的链接 关于这个:

Here is a good link about this:

不要忘记使用最后一行解除分配stmt

Don't forget to deallocate the stmt using the last line!

祝你好运!

这篇关于如何在 MySQL 存储过程中使用动态 SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)
SQL/MySQL: split a quantity value into multiple rows by date(SQL/MySQL:按日期将数量值拆分为多行)