当我调用此存储过程时,它显示错误:未知列...
BEGIN
if (
`LastRow.Transaction`=4 and `LastRow.Xre`>1)
then
SELECT
sleep(2);
END if;
end
请注意sleep(2)
只是为了证明在条件成立时做某事。根据特定记录的值完成测试的正确方法是什么?在上面的例子中,表(实际上是一个View)只有一行。
答案 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$$