【发布时间】:2016-10-07 00:05:09
【问题描述】:
我的任务是使用要从外部来源引入的信息来更新几个表。为此,我一直在网上寻找将表名作为参数传递的方法,所有答案都很复杂和/或抛出错误(如下所示:“Incorrect syntax near 'Table' error shows)
CREATE PROCEDURE sp_Insert_Delta
-- Add the parameters for the stored procedure here
@tableName Table READONLY
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Delete rows in MIRROR database where ID exists in the DELTA database
Delete from [S1].[MIRROR].[dbo].@tableName
Where [ID] in (Select [ID] from [S2].[DELTAS].[dbo].@tableName)
-- Insert all deltas
Insert Into [S1].[MIRROR].[dbo].@tableName
Select * from [S2].[DELTAS].[dbo].@tableName
END
GO
这个脚本在显式命名时工作得很好,那么如何参数化表名?
谢谢,
内特
【问题讨论】:
-
附注:如果这是 SQL Server,您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: sql sql-server stored-procedures