动态SQL是指我们可以动态构建SQL代码,然后执行此批处理。执行动态SQL的方法有两种,即EXEC命令和SP_executesql存储过程。以下是示例代码。
-- 动态SQL-- 方法1:EXEC命令(支持普通字符和Unicode字符)DECLARE @sql AS NVARCHAR(100);SET @sql=N'PRINT 这条消息是动态SQL命令打印的.'';';EXEC(@sql);
执行结果:
-- 动态SQL-- 方法1:EXEC命令(支持普通字符和Unicode字符)DECLARE @sql AS NVARCHAR(100);DECLARE @deptIDs AS NVARCHAR(50)= '1,2,4';SET @sql= N'SELECT * FROM dept WHERE id IN ('+@deptIDs+');';EXEC(@sql);
-- 方法二:sp_executesql存储过程(只支持Unicode字符)DECLARE @sql2 AS NVARCHAR(100);SET @sql2= N'SELECT * FROM dept WHERE id=@id';EXEC sys.sp_executesql @stmt= @sql2, @params= N'@ID AS INT', @id=3;