DECLARE @sql NVARCHAR(4000) PRINT @sql EXEC(@sql)
时间: 2024-08-21 15:01:06 浏览: 105
sql注入数据库修复的两种实例方法
在SQL Server中,`DECLARE` 和 `EXEC` 是两个关键字,用于动态 SQL 的创建和执行。`DECLARE` 语句用于声明一个变量,这里 `@sql` 是一个名为 `sql` 的变量,它是一个 `NVARCHAR` 类型,可以存储长度为 4000 字节的字符串,通常用于构建动态的 SQL 查询。
`PRINT @sql` 语句则是用来打印这个变量的内容,这通常是查询构造完成后的预览,但不会实际执行。而 `EXEC(@sql)` 执行了存储在 `@sql` 变量中的 SQL 语句,这意味着如果 `@sql` 存储的是一个有效的查询,那么这段动态生成的 SQL 将被执行。
举个例子:
```sql
DECLARE @sql NVARCHAR(4000)
SET @sql = 'SELECT * FROM Employees WHERE Salary > 5000'
PRINT @sql
EXEC(@sql)
```
上述代码会先打印出 "SELECT * FROM Employees WHERE Salary > 5000" 这条查询,然后根据这个字符串内容去查询 Employees 表中薪水大于 5000 的记录。
阅读全文