if语句的过程中出现未知列错误

时间:2017-12-05 22:37:08

标签: mysql

当我调用此存储过程时,它显示错误:未知列...

BEGIN
  if (
  `LastRow.Transaction`=4 and `LastRow.Xre`>1)
  then
  SELECT
  sleep(2);
END if;
end

请注意sleep(2)只是为了证明在条件成立时做某事。根据特定记录的值完成测试的正确方法是什么?在上面的例子中,表(实际上是一个View)只有一行。

1 个答案:

答案 0 :(得分:1)

问:根据特定记录的值完成测试的正确方法是什么?

如果您的意思是,基于存储在表的一行中的列中的值...似乎我们需要一个引用该表的查询来检索存储在该行中的值。然后我们可以在程序中提供这些值。

作为一个例子

BEGIN
   -- local procedure variables, specify appropriate datatypes
   DECLARE lr_transaction BIGINT DEFAULT NULL;
   DECLARE lr_xre         BIGINT DEFAULT NULL;

   -- retrieve values from columns into local procedure variables
   SELECT `LastRow`.`Transaction` 
        , `LastRow`.`Xre`
     INTO lr_transaction
        , lr_xre
     FROM `LastRow`
    WHERE someconditions
    ORDER BY someexpressions
    LIMIT 1
   ;

   IF ( lr_transaction = 4 AND lr_xre > 1 ) THEN
      -- do something
   END IF;
END$$

这是我们如何从表中检索行并进行一些检查的示例。我们也可以用SQL进行检查,只返回一个布尔值

BEGIN
   -- local procedure variables, specify appropriate datatypes
   DECLARE lb_check TINYINT(1) UNSIGNED DEFAULT 0;

   -- retrieve values from columns into local procedure variables 
   SELECT IF(`LastRow`.`Transaction` = 4 AND `LastRow`.`Xre` > 1,1,0)
     INTO lb_check
     FROM `LastRow`
    WHERE someconditions 
    ORDER BY someexpressions
    LIMIT 1
   ;

   IF ( lb_check ) THEN
      -- do something
   END IF;
END$$