0
我想在sql server 2008中編寫一個函數,該函數可以將表名稱作爲變量。以表名爲參數的sql server中的函數
如:
create function test(@tbl varchar(50))
..
select * from @tbl
..
我想在sql server 2008中編寫一個函數,該函數可以將表名稱作爲變量。以表名爲參數的sql server中的函數
如:
create function test(@tbl varchar(50))
..
select * from @tbl
..
您可以從一個變量執行SQL語句:
在功能:
DECLARE @var AS VARCHAR(500)
SET @var = 'SELECT * FROM ' + @tbl
EXECUTE (@var)
你不能在函數內調用'EXECUTE'。 –
你會想看看在動態SQL,但是你不能使用動態一個函數內部的SQL。 – Taryn
你想要什麼功能?爲什麼你的桌子有完全相同的結構? (你的例子中'select *'暗示所有的列都是相同的。) –
因爲這隻有在所有的表都具有相同的形狀時才能起作用(必須修復從函數返回的列的數量,名稱和類型) ,那麼推測這種表格的數量是有限的。在這種情況下,你可以使用大量的'UNION ALL'結構和'WHERE'子句來測試'@ tbl',以確保只有一個'SELECT'返回任何行。而且,表名通常應該聲明爲'sysname'而不是'varchar(50)'。 –