Na przykład, to nie zadziała:W MySQL: Jak przekazać nazwę tabeli jako procedura składowana i/lub argument funkcji?
DELIMITER //
CREATE PROCEDURE countRows(tbl_name VARCHAR(40))
BEGIN
SELECT COUNT(*) as ct FROM tbl_name;
END //
DELIMITER ;
CALL countRows('my_table_name');
Produkuje:
ERROR 1146 (42S02): Table 'test.tbl_name' doesn't exist
Jednak to działa zgodnie z oczekiwaniami:
SELECT COUNT(*) as ct FROM my_table_name;
Jakie składnia jest wymagane użycie argumentu jako nazwa tabeli w instrukcji select? Czy to możliwe?
Nawet jeśli było to możliwe, nie jest to ścieżka, którą należy zejść. Zbuduj s'procs za pomocą sql, którego naprawdę potrzebujesz, lub po prostu włącz i wyłóż kod SQL ad hoc w swoim kodzie. – NotMe
@Chris Tutaj widać intencje i moc, prawda? Przekazywanie nazwy tabeli do ogólnej funkcji. Uważam to za całkowicie uzasadnione i potrzebne. Pomóż mi zrozumieć, dlaczego źle kontrolować zestaw wyników ze sproc? Z tego, co mówisz, jeśli mam programistę .NET i programistę PHP, powinienem poprosić ich o napisanie własnego kodu, aby uzyskać ten sam zestaw wyników? –
Widzę intencję i jest ona wadliwa. Sugeruję, aby przeczytać następujące: http://www.sommarskog.se/dynamic_sql.html Chociaż obejmuje serwer ms sql, lekcje są takie same. – NotMe