我想在python中編寫一個SQL語句,它將表名作爲變量傳遞。但是,我得到以下錯誤:必須聲明表變量「@ P1」。我怎樣才能傳遞一個表名作爲SQL中的變量 - Python 3.4
pypyodbc.Programming Error: ('42000', '[42000]' [Miscrosoft] [SQL SERVER NATIVE CLIENT 10.0] [SQL SERVER] Must declare the table variable "@P1"
產生錯誤的代碼是:
query = cursor.execute('''SELECT * FROM ?''', (table_variable,))
我還有其他的代碼,我傳遞變量使用的正常工作(下面的代碼按預期工作)的語法相同的SQL語句。
query = cursor.execute('''SELECT column_name FROM information_schema.columns WHERE table_name = ?''', (table_variable,))
當我使用變量傳遞表名稱時,該錯誤似乎發生。
任何幫助解決這個錯誤將不勝感激。
您不能使用參數作爲表名稱。要做到這一點,需要動態的sql。 –
此限制僅限於表名或是否存在其他參數無法傳遞的實例(我還沒有找到任何詳細說明這些限制的文檔)。 – DonnRK
參數旨在用於謂詞來表示值。這意味着你可以在連接中使用它們,其中的子句等等。它們不是用來動態替換對象名稱的。如果你想使用參數作爲對象名稱替換,你必須使用動態sql。如果沿着這條道路走,你不會從鮑比餐桌上出門,要小心。 http://bobby-tables.com/ –