使用传递到 MSSQL 存储过程的变量作为查询的一部分

Using Variables Passing Into MSSQL Stored Proc as part of queries

我想使用传递到存储过程中的变量值。允许吗?

例如,我想将 CID=5,SID=4 传递给更新存储过程

看起来像这样:

CREATE PROCEDURE Update @CID nvarchar(4),@SID nvarchar(4)
AS

DELETE FROM [User"+@CID+@SID+"] 

GO;

其中类似于“DELETE FROM [User54]”

但我想在给定参数的情况下动态完成

能不能做到,怎么做到的?

谢谢

您必须使用动态 SQL。为了安全地执行此操作,请确保使用 quotename 函数正确分隔创建的对象名称。

像这样:

CREATE OR ALTER PROCEDURE UpdateSomeTable @CID nvarchar(4), @SID nvarchar(4)
AS
begin
    declare @tableName nvarchar(500) = quotename(concat('User',@CID,@SID));
    declare @sql nvarchar(max) = concat('DELETE FROM ',@tableName);

    --print @sql
    exec sp_executesql @sql 
end