tabla - procedimiento almacenado sql server select
En MySQL: ¿Cómo pasar un nombre de tabla como procedimiento almacenado y/o argumento de función? (1)
Las declaraciones preparadas son lo que necesitas.
CREATE PROCEDURE `test1`(IN tab_name VARCHAR(40) )
BEGIN
SET @t1 =CONCAT(''SELECT * FROM '',tab_name );
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END $$
Por ejemplo, esto no funciona:
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 se requiere para usar un argumento como un nombre de tabla en una instrucción select? ¿Esto es posible?