Por ejemplo, esto no funciona:En MySQL: ¿Cómo pasar un nombre de tabla como procedimiento almacenado y/o argumento de función?
DELIMITER //
CREATE PROCEDURE countRows(tbl_name VARCHAR(40))
BEGIN
SELECT COUNT(*) as ct FROM tbl_name;
END //
DELIMITER ;
CALL countRows('my_table_name');
Produce:
ERROR 1146 (42S02): Table 'test.tbl_name' doesn't exist
Sin embargo, esto funciona como se esperaba:
SELECT COUNT(*) as ct FROM my_table_name;
Qué sintaxis necesaria para utilizar un argumento como una nombre de la tabla en una declaración de selección? ¿Esto es posible?
Incluso si esto fuera posible, este no es un camino que deba seguir. Construya s'procs con el sql que realmente desea, o simplemente continúe e incruste el sql ad hoc en su código. – NotMe
@Chris Puedes ver la intención y el poder aquí, ¿no? Pasar el nombre de una tabla a una función genérica. Lo veo como perfectamente legítimo y necesario. ¿Me ayuda a entender por qué es malo controlar un conjunto de resultados desde un sproc? Por lo que dices, si tengo un desarrollador de .NET y un desarrollador de PHP, ¿debería pedirles que escriban su propio código para obtener el mismo conjunto de resultados? –
Veo el intento, y está defectuoso. Le sugiero que lea lo siguiente: http://www.sommarskog.se/dynamic_sql.html Aunque cubre el servidor ms sql, las lecciones son las mismas. – NotMe