2010-11-17 118 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

相关问题