2013-08-19 29 views
0

我想在sql server 2008中編寫一個函數,該函數可以將表名稱作爲變量。以表名爲參數的sql server中的函數

如:

create function test(@tbl varchar(50)) 

.. 

select * from @tbl 

.. 
+6

你會想看看在動態SQL,但是你不能使用動態一個函數內部的SQL。 – Taryn

+0

你想要什麼功能?爲什麼你的桌子有完全相同的結構? (你的例子中'select *'暗示所有的列都是相同的。) –

+1

因爲這隻有在所有的表都具有相同的形狀時才能起作用(必須修復從函數返回的列的數量,名稱和類型) ,那麼推測這種表格的數量是有限的。在這種情況下,你可以使用大量的'UNION ALL'結構和'WHERE'子句來測試'@ tbl',以確保只有一個'SELECT'返回任何行。而且,表名通常應該聲明爲'sysname'而不是'varchar(50)'。 –

回答

0

您可以從一個變量執行SQL語句:

在功能:

DECLARE @var AS VARCHAR(500) 
SET @var = 'SELECT * FROM ' + @tbl 
EXECUTE (@var) 
+2

你不能在函數內調用'EXECUTE'。 –