当执行以下存储过程时,我得到无效的对象名称dbo.Approved。对象dbo.Approved确实存在,所以大概这是与我传递表名作为参数的方式有关吗?无效的对象名称 - SQL服务器2005
我还应该补充一点,我通过.NET执行程序或从SMSS内部执行程序来获得错误。
@tableName as nvarchar(100)
AS
BEGIN
EXEC('
UPDATE T1
SET T1.NPTid = dbo.Locations.NPT_ID
FROM ' + '[' + @tableName + '] As T1
INNER JOIN dbo.Locations ON T1.Where_Committed = dbo.Locations.Location_Name
')
END
编辑从乔和JNK接到求救后,现在的存储过程是这样的,但我得到的错误
Msg 102, Level 15, State 1, Procedure sp_Updater, Line 14
Incorrect syntax near 'QUOTENAME'.
新的存储过程
@tableName as nvarchar(100),
@schemaName as nvarchar(20)
AS
BEGIN
EXEC('
--Update NPT
UPDATE T1
SET T1.NPTid = dbo.Locations.NPT_ID
FROM ' + QUOTENAME(@schemaName) + '.' + QUOTENAME(@tableName) + ' As T1
INNER JOIN dbo.Locations ON T1.Where_Committed = dbo.Locations.Location_Name
')
END
你是如何将表名作为参数传递的? “dbo.Approved”或“Approved” – Ramy 2010-12-17 16:38:41
是的,您可以忽略Alter Proc位 – MrBliz 2010-12-17 16:39:41