动态SQL执行带参存储过程

USE tempdb
GO
IF OBJECT_ID('proc_test') IS NOT NULL
DROP PROC proc_test
GO
CREATE PROC proc_test
@p INT=2
AS
BEGIN
	SELECT @p AS r;
END
GO
DECLARE @sql1 NVARCHAR(MAX),@sql2 NVARCHAR(MAX),@sql3 NVARCHAR(MAX),@sql4 NVARCHAR(MAX)
SET @sql1='proc_test 1'
SET @sql2='proc_test'
SET @sql3='EXEC proc_test'
SET @sql4='EXEC proc_test 4'
EXEC (@sql1);
/*
r
1
*/
EXEC (@sql2);
/*
r
2
*/
EXEC (@sql3);
/*
r
2
*/
EXEC (@sql4);
/*
r
4
*/

 

你可能感兴趣的:(SQL,Server)