Mysql 带有if语句的过程中出现未知列错误
当我调用此存储过程时,它显示错误:未知列Mysql 带有if语句的过程中出现未知列错误,mysql,Mysql,当我调用此存储过程时,它显示错误:未知列 BEGIN if ( `LastRow.Transaction`=4 and `LastRow.Xre`>1) then SELECT sleep(2); END if; end 请注意,sleep(2)只是演示在条件为真的情况下如何操作。根据特定记录的值完成测试的正确方法是什么?在上面的示例中,表(实际上是一个视图)只有一行。Q:根据特定记录的值完成测试的正确方法是什么 如果您的意思是,基于存储在表的一行中的列中的值。。。似
BEGIN
if (
`LastRow.Transaction`=4 and `LastRow.Xre`>1)
then
SELECT
sleep(2);
END if;
end
请注意,
sleep(2)
只是演示在条件为真的情况下如何操作。根据特定记录的值完成测试的正确方法是什么?在上面的示例中,表(实际上是一个视图)只有一行。Q:根据特定记录的值完成测试的正确方法是什么
如果您的意思是,基于存储在表的一行中的列中的值。。。似乎我们需要一个查询来引用检索存储在该行中的值的表。然后我们可以在程序中得到这些值
例如
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$$
Thx,现在我明白了,
如果。。。如果
代码需要从sql语句获取其值的变量,则结束。