【发布时间】:2020-04-04 00:48:08
【问题描述】:
我想从用户变量中获取:'Top' 子句的 num 和来自 northwind DB 的 Tbl 名称, 为了取回前 5 名的结果集,我的脚本已关闭
create procedure sp_getTop5
(
@num int ,
@tbl nvarchar(max)
)
as
declare @res nvarchar(max);
set @res = 'select top '+str(@num)+' * from '+@tbl
exec @res
---- check
exec sp_getTop5 5, employees
【问题讨论】:
-
太棒了。有什么问题?
-
天哪!!!这只是一个等待发生的注入问题。为什么要将未经处理的
nvarchar(MAX)注入到EXEC语句中?! -
没有 ORDER BY 的 Top N 也可能产生意想不到的结果
标签: sql sql-server stored-procedures dynamic-sql