【发布时间】:2021-09-24 16:10:03
【问题描述】:
在 mySQL 存储过程中,如何将查询字符串分配给变量,以便我可以重用它?在我的示例中,我将多次使用SELECT id FROM audit。
CREATE PROCEDURE my_proc()
BEGIN
UPDATE person SET status='Active' WHERE id = (SELECT id FROM audit);
SELECT COUNT(*) FROM (SELECT id FROM audit);
//Multile scenarios the `SELECT id FROM audit` will be used.
END
类似:
CREATE PROCEDURE my_proc()
BEGIN
myVariable = SELECT id FROM audit;
UPDATE person SET status='Active' WHERE id = (myVariable;
SELECT COUNT(*) FROM (myVariable);
//Multile scenarios the `SELECT id FROM audit` will be used.
END
【问题讨论】:
-
使用子查询。我认为这没有任何问题。
-
@GordonLinoff 有多次我将使用该子查询。我想把它分配给一个变量,所以如果我编辑那个子查询,我只会编辑一次。
-
audit是否包含单行并且在过程执行期间是否会发生变化? -
如果您希望查询执行一次并重用结果集,请使用临时表。或者,如果您尝试将 SQL 查询(以字符串格式)保存在变量中,则需要动态运行它。 stackoverflow.com/questions/20371677/…
-
这毫无意义。每次使用时都会解析并执行查询。如果您想重用其输出,请将其存储到临时表中。