使用传递到 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
我想使用传递到存储过程中的变量值。允许吗?
例如,我想将 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