2009-04-03 10 views
7

J'ai une table de séquence avec deux colonnes, le nom, la valeur, et j'ai une procédure stockée pour incrémenter la valeur à condition que le nomParamètre MySql Stored Procedure avec le même nom que la colonne d'affects, est-ce possible?

DROP PROCEDURE IF EXISTS p_generate_sequence; 
delimiter | 
CREATE PROCEDURE p_generate_sequence (name VARCHAR(30)) 
BEGIN 
    START TRANSACTION; 
    -- Variable "name" equal to column "name", how to reference? 
    UPDATE sequences_table SET value = value + 1 WHERE name = name; 
    SELECT value FROM sequences_table WHERE name = name; 
    COMMIT; 
END | 
delimiter ; 

Notez le paramètre est appelé « name ».

Existe-t-il une approche pour utiliser un paramètre avec le même nom que le nom de colonne de la table affectée?

REMARQUE: Je ne suis pas intéressé par le nom du paramètre de modification, ni même le nom de la colonne, juste pour savoir si c'est possible ou non, et comment.

+0

peut-être cela vous aidera - http://forge.mysql.com/tools/tool.php?id=13 – madcolor

+0

Je me sens un peu stupide ... très facile , merci beaucoup, Matt –

Répondre

9

Oui, étendez votre colonne de table par un alias.

par exemple.

delimiter // 
create procedure foo(id int) 
begin 
select * from users u where u.id = id; 
end 
// 

call foo(123) 

retours ID utilisateur = 123

Questions connexes