程序始终返回价值

时间:2015-12-16 20:27:51

标签: mysql stored-procedures

我刚刚创建了一个类似的存储过程:

delimiter $$
CREATE PROCEDURE GetSmth(IN f1 INT UNSIGNED, IN f2 VARCHAR(6))
BEGIN

   SELECT
      `ID`
   FROM
      `table`
   WHERE
         `f1`=f1
      AND
         `f2`=f2 COLLATE utf8_unicode_ci
      AND
         `f3` IS NULL
  ORDER BY `ID` DESC
  LIMIT 0, 1

END $$

这是表格中的数据:

ID | f1 |   f2   |  f3
 1 |  1 | 123456 | NULL
 2 |  1 | 555666 | 1

无论我拨打什么电话:CALL GetSmth(3, '123456')CALL GetSmth(1, '000000')或我仍然获得2作为我桌上的最后ID。其他存储过程工作正常。我无法弄清楚那个是什么问题。当我在没有程序的情况下调用此SELECT语句时,它正在运行。例如,如果我将3作为f1值传递,我将无法获得任何结果。但在程序中它将返回2。我的定义器没问题(就像在其他程序中一样)并且SQL Data Access设置为CONTAINS SQL - 就像在其他程序中一样。 关于表的几句话:InnoDB,ID - INT UNSIGNED AI NOT NULLf1f2是索引INDEX(用作另一个表的外键)。这个表就像任何其他表一样。

1 个答案:

答案 0 :(得分:1)

使用与要使用的查询中的字段名称相同的参数名称通常不是一个好主意。尝试将参数重命名为p_f1p_f2