2009-04-03 69 views
7

tengo una tabla de secuencia con dos columnas, nombre, valor, y tengo un procedimiento almacenado para incrementar el valor proporcionado el nombreParámetro de MySql Stored Procedure con el mismo nombre que la columna de afectación, ¿es posible?

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 ; 

Nota el parámetro se llama "nombre".

¿Hay algún enfoque para usar un parámetro con el mismo nombre que el nombre de columna de la tabla afectada?

NOTA: No me interesa cambiar el nombre del parámetro, ni siquiera el nombre de la columna, solo para saber si es posible o no, y cómo.

+0

tal vez esto ayude - http://forge.mysql.com/tools/tool.php?id=13 – madcolor

+0

me siento un poco tonto ... muy fácil , muchas gracias, Matt –

Respuesta

9

Sí, delimite la columna de la tabla con un alias.

p. Ej.

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

call foo(123) 

retornos de usuario id = 123

Cuestiones relacionadas