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

时间:2015-11-13 13:43:39

标签: sql-server entity-framework stored-procedures complextype

我有一个像这样的存储过程

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列,手动创建复杂类型将是一种负担。

1 个答案:

答案 0 :(得分:1)

无论你做什么 - 不要写这样的代码,一家英国公司得到的SQL注入攻击花费了大约3500万英镑。

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

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