2010-11-17 45 views
1

您好frnds我我需要通過一個表名作爲參數傳遞給存儲過程如何通過表名作爲參數在SQL Server

CREATE PROCEDURE six @tablename nvarchar 
AS 
SELECT * FROM + @tablename 
Go 
exec six Entry_sixsigma_mag 

它給錯誤,如

消息102,15級,狀態1,步驟六,第3行 '+'附近的語法不正確。 消息208,級別16,狀態1,過程6,行3 無效的對象名稱'@sixsigma'。

+0

http://stackoverflow.com/questions/3346842/stored-procedure-pass-table-name-as-a-parameter – goodeye 2012-05-12 00:23:37

回答

4

嘗試像

CREATE PROCEDURE six @tablename nvarchar(100) 
AS 
EXEC('SELECT * FROM ' + @tablename) 
Go 
exec six Entry_sixsigma_mag 

看一看EXECUTE (Transact-SQL)

但你也應該看看

一味地使用之前的

+0

的可能重複哎提示錯誤消息208,級別16,狀態1,行 無效的對象名稱'E'。 – Bhushan 2010-11-17 08:58:12

+2

您需要將nvarchar更改爲nvarchar(100)或您需要的長度。您必須記住,如果您未指定NVARCHAR/VARCHAR的長度,則它將假定爲1. – 2010-11-17 09:17:54

+0

而不是EXEC('...'),您還可以使用sp_executesql:http://msdn.microsoft.com/zh-cn/ -us /庫/ ms188001.aspx – thomaspaulb 2010-11-17 10:16:07

相關問題