SQL Server:执行动态SQL

 


在Sql Server查询语句中使用变量表示表名、列字段名等动态查询方式。

方法一:EXEC命令(支持普通字符和Unicode字符)

 1 declare @sql as nvarchar(100);
 2 
 3 set @sql = N'PRINT ''这条消息是动态SQL命令打印的.'';';
 4 
 5 exec ( @sql );
 6 
 7 declare @sql as nvarchar(100);
 8 declare @OrderIDs as nvarchar(50) = N'10248,10249,10250';
 9 
10 set @sql = N'SELECT * FROM Sales.Orders WHERE orderid IN (' + @OrderIDs + N');';
11 
12 exec ( @sql );

方法二:sp_executesql存储过程(提供了输入输出的接口,语句可以重用执行。只支持Unicode字符)

简单的查询

1 declare @TableName varchar(50), @SqlString nvarchar(200), @CourseID int;
2 
3 set @TableName = '课程表';
4 set @CourseID = 1;
5 set @SqlString = N'select * from ' + quotename(@TableName) + N'where ID = ' + cast(@CourseID as varchar(10));
6 
7 exec sp_executesql @SqlString;

使用接口(支持参数的输入输出)

1 declare @sql as nvarchar(100);
2 
3 set @sql = N'SELECT orderid,custid,empid,orderdate
4 FROM Sales.Orders
5 WHERE orderid=@orderid;';
6 
7 exec sys.sp_executesql @stmt = @sql, @params = N'@orderid AS INT', @orderid = 10248;

转自:https://www.cnblogs.com/springsnow/p/9592483.html

posted @ 2020-03-11 16:01  宸昊2022  阅读(107)  评论(0)    收藏  举报