MySql 存储过程 - 字段列表中的未知列

标签 mysql stored-procedures

我在尝试运行存储过程时遇到问题。我可以运行这个查询:

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'

我做错了什么?我尝试在 select 语句中将单引号括在 fp1 和 fp2 ('fp1') 上,得到相同的结果。

谢谢!

最佳答案

我明白了。 CALL 语句需要单引号。啊啊!

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

关于MySql 存储过程 - 字段列表中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947905/

相关文章:

c# - 如何使用 MySqlParameter 有条件地将列设置为其默认值?

sql - 根据同一表中的行计算 SQL 存储过程中的总计

mysql - 将整数数组传递给 mysql 过程

java - JDBC中如何只设置一些参数就可以调用存储过程

mysql - 在更新 wamp 密码时使用句点 (.)

mysql - 'dateAdded' 的默认值无效

php - 在定义的时间段后设置数据库表中的列

mysql - 将表更新为另一个表中的最后一个 ID

c# - 如何检索 Oracle 过程或函数的主体

sql - 在存储过程中执行存储过程