如何执行名称在变量中的存储过程?

Sam*_*Sam 6 sql-server sql-server-2008-r2

给定一个包含存储过程名称的变量:

DECLARE @stored_procedure_name varchar(512);
SET @stored_procedure_name = 'some_stored_procedure_name';
Run Code Online (Sandbox Code Playgroud)

如何执行存储过程(不传入任何参数)?

Tho*_*ger 13

您可以直接使用该变量:

exec @stored_procedure_name;
Run Code Online (Sandbox Code Playgroud)

请参阅BOL 参考EXECUTE


Mar*_*ian 7

过程名称是 SQL Server 中的标识符名称,它遵循数据库标识符的规则。对于对象名称,我更喜欢使用特殊数据类型sysname(NVARCHAR(128) 的同义词)。

为了执行它,您需要使用动态 SQL 使用EXECUTE或系统过程sp_executesql

PS:请参阅@ThomasStringer 的执行示例。

PS2:如果以后需要添加参数,最好的方法是使用 sp_executesql 执行。