我负责维护多个表格的信息,并从外部来源更新这些表格。为此,我一直在网上寻找传递表格名称作为参数的方法,但所有答案都很复杂和/或会出现错误(比如下面的"表格附近语法不正确"错误)。
这个脚本在显式命名时可以正常工作,那么我该如何将表名参数化呢?谢谢,Nate。
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
这个脚本在显式命名时可以正常工作,那么我该如何将表名参数化呢?谢谢,Nate。
sp_
前缀。微软已经保留了该前缀供自己使用(请参阅命名存储过程),而且您将来可能会遇到名称冲突的风险。这也会影响您的存储过程性能。最好只是避免使用sp_
,使用其他前缀或根本不使用前缀! - marc_s