MySQL存储过程设置变量

时间:2016-05-18 10:42:45

标签: mysql stored-procedures

我是MySQL中存储过程的新手

我想知道例如我是否有查询然后将其分成像

这样的变量
SELECT A, B, C, FROM TABLE123 WHERE A = '123'

然后我将它分成存储过程中的变量

SET @select = 'SELECT';
SET @column1= 'A';
SET @column2 = 'B';
SET @column3 = 'C';
SET @parameter = 'WHERE';
SET @equal = '=';

然后从那里我可以在条件语句中使用每个部分或查询或变量,具体取决于调用存储过程时的参数集。

我想知道这是否允许作为标准做法,还是会导致任何性能问题。

1 个答案:

答案 0 :(得分:1)

我认为这与Dynamic SQL类似。

以下是MySQL Docs的基本操作方法基础:

PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
SET @a = 3;
SET @b = 4;
EXECUTE stmt1 USING @a, @b;
DEALLOCATE PREPARE stmt1;

+------------+
| hypotenuse |
+------------+
|          5 |
+------------+

这是一篇由SQL Server MVP撰写的关于The Curse and Blessings of Dynamic SQL的精彩文章,您可能希望阅读该文章。虽然这是针对sql server的,但mysql可能会有类似的信息。