Örneğin, bu işe yaramazsa:MySQL'de: Tablo adı saklı yordam ve/veya işlev argümanı olarak nasıl iletilir?
DELIMITER //
CREATE PROCEDURE countRows(tbl_name VARCHAR(40))
BEGIN
SELECT COUNT(*) as ct FROM tbl_name;
END //
DELIMITER ;
CALL countRows('my_table_name');
üretir: Ancak
ERROR 1146 (42S02): Table 'test.tbl_name' doesn't exist
, bu beklendiği gibi çalışır: Bir olarak bir tartışmayı kullanmak için neler gereklidir sözdizimi
SELECT COUNT(*) as ct FROM my_table_name;
tablo bir seçim ifadesinde? Bu mümkün mü?
Bu mümkün olsa bile, bu aşağı inmeniz gereken bir yol değildir. S'procs'u gerçekten istediğiniz sql ile oluşturun ya da kodunuzda ad hoc sql dosyasını yerleştirin. – NotMe
@Chris Burada niyet ve güç görebilirsiniz, değil mi? Bir tablo adının genel bir işleve geçirilmesi. Bunu mükemmel bir şekilde yasal ve gerekli görüyorum. Bir sproc sonucunu kontrol etmenin neden kötü olduğunu anlamama yardım et? Söylediklerinizden, bir .NET geliştiricisi ve bir PHP geliştiricim varsa, aynı sonuç kümesini elde etmek için kendi kodlarını yazmasını istemen gerekir mi? –
Amaç görüyorum ve kusurlu. Aşağıdakileri okumanızı şiddetle öneririm: http://www.sommarskog.se/dynamic_sql.html Ms sql sunucusunu kapsamasına rağmen, dersler aynıdır. – NotMe