动态 SQL
先决条件 -静态和动态 SQL 之间的区别
动态 SQL是一种编程技术,可用于在运行时编写 SQL 查询。动态 SQL 可用于创建通用且灵活的 SQL 查询。
动态 SQL 的语法是使其成为字符串,如下所示:
'SELECT statement';
要运行动态 SQL 语句,请运行存储过程sp_executesql ,如下所示:
EXEC sp_executesql N'SELECT statement';
将前缀 N 与 sp_executesql 一起使用以将动态 SQL 用作 Unicode字符串。使用动态 SQL 的步骤:
- 声明两个变量,@var1 用于保存表名,@var 2 用于保存动态 SQL:
DECLARE @var1 NVARCHAR(MAX), @var2 NVARCHAR(MAX);
- 将 @var1 变量的值设置为 table_name :
SET @var1 = N'table_name';
- 通过将 SELECT 语句添加到表名参数来创建动态 SQL:
SET @var2= N'SELECT * FROM ' + @var1;
- 使用 @var2 参数运行 sp_executesql 存储过程:
EXEC sp_executesql @var2;
例子 -
SELECT *
from geek;
表 –极客
ID | NAME | CITY |
---|---|---|
1 | Khushi | Jaipur |
2 | Neha | Noida |
3 | Meera | Delhi |
使用动态 SQL:
DECLARE
@tab NVARCHAR(128),
@st NVARCHAR(MAX);
SET @tab = N'geektable';
SET @st = N'SELECT *
FROM ' + @tab;
EXEC sp_executesql @st;
表 –极客
ID | NAME | CITY |
---|---|---|
1 | Khushi | Jaipur |
2 | Neha | Noida |
3 | Meera | Delhi |