MySQL创建过程语法
我有一张有很多参数的表:MySQL创建过程语法,mysql,syntax,procedure,Mysql,Syntax,Procedure,我有一张有很多参数的表: idPumpParam|Type |Version|A10A|A11A|A12A|A13A|A14A|... 1 |Pump1 |DL cons|1 |32 |45 |6 |67 |... 2 |Pump2 |DL var |2 |65 |8 |37 |43 |... 为了使用我的自动化搜索参数,我想在MySQL Workbench 5.7中创建一个过程: CREATE DEFINER = `
idPumpParam|Type |Version|A10A|A11A|A12A|A13A|A14A|...
1 |Pump1 |DL cons|1 |32 |45 |6 |67 |...
2 |Pump2 |DL var |2 |65 |8 |37 |43 |...
为了使用我的自动化搜索参数,我想在MySQL Workbench 5.7中创建一个过程:
CREATE DEFINER = `root`@`localhost`
PROCEDURE `procReadParam`(IN Param VARCHAR(20),
IN TypePpe VARCHAR(20),
IN Version VARCHAR(20))
BEGIN
SELECT Param FROM pumpparameters.pumpparam
WHERE Type1 LIKE TypePpe AND Version=Version AND Frequence=Freq;
END
程序很好,没有错误消息
我在MySQL Workbench中测试该过程:
call pumpparameters.procReadParam(A12A, 'Pump1', 'DL cons')
有以下错误消息:
错误代码:1054。“字段列表”中的未知列“A12A”
您能帮我了解这个错误消息吗?您是否尝试过用单引号中的
Param
调用该过程?这样地:
调用pumpparameters.procReadParam('A12A','Pump1','DL cons')
如果要在过程中动态使用列,可以准备并执行SQL字符串语句
大概是这样的:
DELIMITER //
CREATE DEFINER = `root`@`localhost`
PROCEDURE `procReadParam`(IN Param VARCHAR(20),
IN TypePpe VARCHAR(20),
IN Version VARCHAR(20))
BEGIN
SET @sql = CONCAT('SELECT ', Param, ' FROM pumpparameters.pumpparam WHERE Type1 = \'', TypePpe ,' AND Version =\'',Version,'\'');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
注:
- 对于VARCHAR列,应该用单引号括住它们的值,从而在CONCAT中正确地转义它们(使用
)\'
- 我用
替换了=
,因为LIKE在那里没有任何用途LIKE
- 我删除了
部分,因为您没有将其作为参数传递Freq
因此,您必须进行一些调整,使其能够像您希望的那样使用“”,答案是:Param | A12目前它是一个测试表,真正的表将非常大。我需要像“%Pump1%”,因为有许多泵没有Pump1,而是具有相同的参数:类型| MN 0100B、MP 0100B、MQ 0100BNU 2000 N|BJ 0400 B,BG 1300 J。我需要频率,因为同一台泵可以有50、60或90Hz的电机,但参数不同