2016-04-29 213 views
0

我遇到了试图运行存储过程的问题。我可以运行此查询:MySql存储过程 - 字段列表中的未知列

select 
bit_count(cast(conv(substr('00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039', 1, 16), 16, 10) as unsigned)^cast(conv(substr('00d803fc07fc1ff807f8027f203f607b00fe03ff01fe03b8077f07780fb94039', 1, 16), 16, 10) as unsigned)) + 
bit_count(cast(conv(substr('00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039', 17, 16), 16, 10) as unsigned)^cast(conv(substr('00d803fc07fc1ff807f8027f203f607b00fe03ff01fe03b8077f07780fb94039', 17, 16), 16, 10) as unsigned)) + 
bit_count(cast(conv(substr('00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039', 33, 16), 16, 10) as unsigned)^cast(conv(substr('00d803fc07fc1ff807f8027f203f607b00fe03ff01fe03b8077f07780fb94039', 33, 16), 16, 10) as unsigned)) + 
bit_count(cast(conv(substr('00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039', 49, 16), 16, 10) as unsigned)^cast(conv(substr('00d803fc07fc1ff807f8027f203f607b00fe03ff01fe03b8077f07780fb94039', 49, 16), 16, 10) as unsigned)); 

但是当我尝试制作成一个存储过程这一点,失败,“未知列”错误:

MariaDB [modscripts]> DELIMITER // 
MariaDB [modscripts]> CREATE PROCEDURE Distance(IN fp1 CHAR(64), fp2 CHAR(64)) 
-> BEGIN 
-> SELECT bit_count(cast(conv(substr(fp1, 1, 16), 16, 10) as unsigned)^cast(conv(substr(fp2, 1, 16), 16, 10) as unsigned)) + 
-> bit_count(cast(conv(substr(fp1, 17, 16), 16, 10) as unsigned)^cast(conv(substr(fp2, 17, 16), 16, 10) as unsigned)) + 
-> bit_count(cast(conv(substr(fp1, 33, 16), 16, 10) as unsigned)^cast(conv(substr(fp2, 33, 16), 16, 10) as unsigned)) + 
-> bit_count(cast(conv(substr(fp1, 49, 16), 16, 10) as unsigned)^cast(conv(substr(fp2, 49, 16), 16, 10) as unsigned)); 
-> END // 
Query OK, 0 rows affected (0.00 sec) 

MariaDB [modscripts]> DELIMITER ; 
MariaDB [modscripts]> call Distance(00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039, 00d803fc07fc1ff807f8027f203f607b00fe03ff01fe03b8077f07780fb94039); 
ERROR 1054 (42S22): Unknown column '00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039' in 'field list' 

我在做什么错?我试过在fp1和fp2('fp1')的select语句中加上单引号,结果相同。

谢谢!

回答

0

我想通了。 CALL语句需要单引号。哎呀!

call Distance('00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039','00d803fc07fc1ff807f8027f203f607b01fe03ff01fc03b8077f07780fb94039');