MySQL中是否有类似于SQL Server中的sp_executesql存储过程?

3

我希望在我的存储过程中进行动态查询。SQL Server有一个很好的sp_executesql存储过程来完成这些任务,MySQL是否有类似的功能可以帮助我实现相似的功能?


1
这是您要找的内容吗?链接 - OzrenTkalcecKrznaric
2个回答

8
据我所知,并没有完全相同的东西。但是,您可以使用预处理语句,例如:
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|          5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;

从这里复制: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html
预处理语句是一种MySQL的客户端/服务器协议,它使得应用程序可以将参数(如SQL查询)与SQL语句分开发送到MySQL服务器。这样,您就可以重复执行该语句,并且仅更改参数值。通过使用预处理语句,可以大大减少SQL注入攻击的风险,并提高SQL查询的效率。预处理语句还允许MySQL优化内部查询缓存,从而提高性能。

3

您可能需要使用MySQL的预处理语句来实现此目的:

SET @query = 'INSERT INTO tbl (a) VALUES (?)';
PREPARE stmt FROM @query;

...
SET @param = 'hello';
EXECUTE stmt USING @param;
...

DEALLOCATE PREPARE stmt;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接