在EF中创建使用exec SP_executesql的复杂类型的SP



我有一个类似的存储过程

CREATE PROCEDURE [dbo].[GetUserData]
    (@departmentId varchar(max))
AS
BEGIN
    Set FMTONLY off
    declare @sql nvarchar(Max)
    Set @sql = 'select * from Users where DepartmentId in ('+@departmentId+'))'
    exec sp_executesql @sql

当我试图将这个存储过程添加到EF并从中创建一个复杂的类型时,我得到了一个错误:

所选程序或函数不返回列

SET FMTONLY关闭也无助于

此表有25列,手动创建复杂类型将是一种负担。

无论你做什么-不要写那样的代码,一家英国公司遭受了SQL注入攻击,损失约3500万英镑。

在你的代码中,我可以在@departmentid参数中写入我想要的任何注入,你只需为我执行它!

为了回答您的问题,这可能是因为在实际执行存储过程之前,该存储过程实际上并没有结果。

最新更新