Mysql
 sql >> Base de données >  >> RDS >> Mysql

Un autre #1054 :Colonne inconnue dans le mystère de la "liste des champs"

Pour moi, affectation avec expression CASE est un peu déroutant (difficile à lire) donc j'utiliserais CASE clause avec INTO @var à la place :

BEGIN
CASE
    WHEN vtable = 'daily_operation' THEN 
        SELECT start_time INTO @result FROM daily_operation WHERE (client_id = vclient_id AND user_id = vuser_id AND id = vid AND edition_id = vedition_id) LIMIT 1;
    WHEN vtable = 'monthly_operation' THEN 
        SELECT start_time INTO @result FROM monthly_operation WHERE (client_id = vclient_id AND user_id = vuser_id AND id = vid AND edition_id = vedition_id) LIMIT 1;
END CASE;

RETURN @result;
END

Notez que vous n'avez pas besoin de DÉCLARER les @session_variables utilisées dans SP.