在 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
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