为什么这个代码错误? SQL错误代码1109:未知表' o'在字段列表中

时间:2014-09-13 03:26:30

标签: mysql sql

当我运行此代码时,它给了我错误。从这段代码中,有几项任务要做:  (1)如果c_id = 1,则通过将地址设置为'90 TYT'来更新客户 (2)查看order_no,status,c_id,item_total备注。 (3)如果item_total 0,则通过设置remarks ='UNAVAILABLE'更新表order_status,否则选择order_no,status,item_total,remarks where status ='waiting'。

请帮我修复错误。我是SQL的新手。

#drop procedure if exists usp_GetAnything;
delimiter //
create procedure usp_GetAnything()
begin

select c_id,lname,address,city
from customer;
update customer
set address = '90 TYT'
where c_id = 1;

select o.order_no,o.o_status,c.c_id,o.item_total,o.remarks
from customer c, order_status o
where c.c_id=o.c_id;

    if (o.item_total > 0) then 
    update order_status o
    set remarks = 'UNAVAILABLE'
    where order_no > '123';
    else  
    select order_no,o_status,item_total,remarks
    from order_status
    where o_status = 'waiting';

end if;

end

1 个答案:

答案 0 :(得分:0)

它失败了:

 if (o.item_total > 0)

o在上一个select子句之外未被识别,包括所有选定的变量。

要使用上一次选择返回的结果,您应该select ... INTO... (将结果参数选择为声明的局部变量)。

您可以在以下示例中找到 here

DELIMITER //
CREATE PROCEDURE `proc_WHILE` (IN param1 INT)
BEGIN
    DECLARE variable1, variable2 INT;
    SET variable1 = 0;

    WHILE variable1 < param1 DO
        INSERT INTO table1 VALUES (param1);
        SELECT COUNT(*) INTO variable2 FROM table1; 
        SET variable1 = variable1 + 1;
    END WHILE;
END //

您可以看到variable1variable2在程序开始时声明,稍后与select ... INTO ...一起使用。