2010-08-25 49 views
2

使用SQl Server 2000我有一個存儲過程,它連接兩個表然後返回數據。我希望這個sp能夠爲我傳入的任何表名做到這一點,否則我會得到完全相同的代碼,除了表名之外的20個左右的代碼。基本上,我如何使用變量指向一個表,還是允許?謝謝。SQL表「指針」?

回答

0

嘗試構建SELECT作爲字符串,然後調用EXEC並傳遞字符串。

例如

declare @sql varchar(500) 
set @sql = 'select whatever from ' + @tableName 
exec @sql 
+2

有效,但有風險:http://xkcd.com/327/ – 2010-08-25 19:28:00

0

一個PROC做什麼怎麼做是正確的通常是一個壞壞主意。根據具體情況,我可能需要去20個可能的表格,這幾乎總是表明數據庫設計很糟糕。閱讀Denis發佈的關於動態SQL的詛咒和祝福的文章。

+0

每個表格中的某些列是一致的,這就是我所拉動的。有20條if語句會更好嗎? – Shawn 2010-08-25 20:13:08

+0

如果我有20個表格中的5列相同,我會將它們拉出到單獨的父表中。這就是我的意思是關於你的數據庫設計不好。 – HLGEM 2010-08-25 20:27:54

+0

可能,但它不適用於我如何顯示數據並更新它。 – Shawn 2010-08-26 12:06:02