在 SQL 服务器程序上放置动态 table 名称

Place dynamic table name on SQL Server procedure

create procedure add_temp
(
    @inst varchar (max),
    @cd varchar (max),
    @price varchar (max),
    @tbl SYSNAME
)
AS
BEGIN
    IF EXISTS (Select * from @tbl WHERE code = @cd and inst = @inst)
       UPDATE @tbl
       SET amount = amount + 1
       WHERE cd = @cd AND inst = @inst

    ELSE
       INSERT INTO @tbl([cd], [price], [amount], [inst]) 
       VALUES (@cd, @price, 1, @inst)
    END

有没有办法在 SQL 服务器程序上放置动态 table 名称?

它看起来 @parameters 只适用于像 WHERE

这样的条件语句
create procedure add_temp
    (
    @inst varchar (max),
    @cd varchar (max),
    @price varchar (max),
    @tbl SYSNAME
    )
as
BEGIN
  DECLARE @Sql NVARCHAR(MAX);

SET @Sql =  N'IF EXISTS (Select * from '+ QUOTENAME(@tbl) 
          + N' WHERE code = @cd and inst = @inst)
    UPDATE  '+ QUOTENAME(@tbl) 
         + N' SET amount = amount + 1
            WHERE cd = @cd and inst = @inst
    else
    INSERT INTO '+ QUOTENAME(@tbl) + N'([cd],[price],[amount],[inst]) 
                VALUES (@cd,@price,1,@inst)'

Exec sp_executesql @Sql 
                  ,N'@inst varchar (max),@cd varchar (max),@price varchar (max)'
                  ,@inst
                  ,@cd 
                  ,@price 

END