我有一个类似的存储过程
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参数中写入我想要的任何注入,你只需为我执行它!
为了回答您的问题,这可能是因为在实际执行存储过程之前,该存储过程实际上并没有结果。