MySQL将JOIN语句转换为存储过程或函数?

时间:2015-06-12 06:39:50

标签: mysql stored-procedures concat stored-functions

所以我有一个JOIN语句,我将在多个地方使用。它基本上找到一个IP地址,并将其与中间表中的所述位置相匹配。我需要传入两个变量 - 一个是我的数据库/模式的前缀,另一个是IP地址本身 因此,使用input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus, input:-webkit-autofill:active { transition: background-color 5000s ease-in-out 0s; -webkit-box-shadow: 0 0 0px 1000px #fff inset; } 函数将它拼凑在一起。

所以目前我的程序看起来像这样:

CONCAT()

它返回我想要的结果但是我不知道如何在声明中使用它。

CREATE DEFINER=`root`@`%` PROCEDURE `LocationFromIp`(
ipAddress VARCHAR(16),
clientComp VARCHAR(32)
)
BEGIN

DECLARE test VARCHAR(255);

SET @networkSql = CONCAT("
SET @Location =
    (SELECT `network`.`Name`
    FROM `", clientComp, "-settings`.`iptable` AS `iptable`
    LEFT JOIN `", clientComp, "-settings`.`network` AS `network`
    ON `network`.`Subnet` = `iptable`.`Subnet`
    WHERE `iptable`.`IP` = '", ipAddress, "'
    LIMIT 1);
");

PREPARE test1 FROM @networkSql;
EXECUTE test1;

SELECT @Location AS `Location`;

以上不起作用,但我希望你能理解我的想法!

那我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

为什么不能从一开始就调整存储过程以包含所需的所有字段?