如何使用 FromSqlInterpolated 的 SQL 输出参数?或替代
How to use a SQL output parameter with FromSqlInterpolated? Or alternative
使用 ASP.Net 核心 3.0。我的数据库查询有效 - 我可以获得结果集(记录),但是如何 pass/get 输出参数?还想知道是否有办法获得 return 值。
我尝试使用不同的方式来调用 SQL 查询,而我唯一能够开始工作的方式是 FromSqlInterpolated,但对不同的方法开放。
这段代码对我有用,但我想传递一个额外的参数,该参数可以作为输出参数填充(当我通过从 SQL 服务器中调用存储过程来测试它时,它正在工作)。
var result = _context.Users
.FromSqlInterpolated($"EXEC mystoredproc {user.Username} ").AsEnumerable().FirstOrDefault();
我尝试在调用前创建一个变量
string out1 = null;
然后在调用中包含它,但我无法弄清楚语法,我不确定这种方法是否支持它。
var result = _context.Users
.FromSqlInterpolated($"EXEC mystoredproc {user.Username}, OUTPUT {out1}").AsEnumerable().FirstOrDefault();
Console.WriteLine(out1);
希望有人能给我指出正确的方向——想知道如何使用输出参数以及如何获取 return 值,而不仅仅是记录集。谢谢。
接受的答案似乎对我不起作用。
但是,我最终通过使用以下代码
设法使 OUTPUT
参数起作用
var p0 = new SqlParameter("@userName", {user.Username});
var p1 = new SqlParameter("@out1", System.Data.SqlDbType.NVarChar, 20) { Direction = System.Data.ParameterDirection.Output };
string out1 = null;
var result = _context.Users
.FromSqlRaw($"EXEC mystoredproc @userName, @out1 OUTPUT ", p0, p1).AsEnumerable().FirstOrDefault();
Console.WriteLine(p1.Value); // Contains the new value of the p1 parameter
只是一个小警告,p1 值 属性 只会在请求执行时更改(通过 AsEnumerable
、Load()
或任何强制 Sql执行)
使用 ASP.Net 核心 3.0。我的数据库查询有效 - 我可以获得结果集(记录),但是如何 pass/get 输出参数?还想知道是否有办法获得 return 值。
我尝试使用不同的方式来调用 SQL 查询,而我唯一能够开始工作的方式是 FromSqlInterpolated,但对不同的方法开放。
这段代码对我有用,但我想传递一个额外的参数,该参数可以作为输出参数填充(当我通过从 SQL 服务器中调用存储过程来测试它时,它正在工作)。
var result = _context.Users
.FromSqlInterpolated($"EXEC mystoredproc {user.Username} ").AsEnumerable().FirstOrDefault();
我尝试在调用前创建一个变量
string out1 = null;
然后在调用中包含它,但我无法弄清楚语法,我不确定这种方法是否支持它。
var result = _context.Users
.FromSqlInterpolated($"EXEC mystoredproc {user.Username}, OUTPUT {out1}").AsEnumerable().FirstOrDefault();
Console.WriteLine(out1);
希望有人能给我指出正确的方向——想知道如何使用输出参数以及如何获取 return 值,而不仅仅是记录集。谢谢。
接受的答案似乎对我不起作用。 但是,我最终通过使用以下代码
设法使OUTPUT
参数起作用
var p0 = new SqlParameter("@userName", {user.Username});
var p1 = new SqlParameter("@out1", System.Data.SqlDbType.NVarChar, 20) { Direction = System.Data.ParameterDirection.Output };
string out1 = null;
var result = _context.Users
.FromSqlRaw($"EXEC mystoredproc @userName, @out1 OUTPUT ", p0, p1).AsEnumerable().FirstOrDefault();
Console.WriteLine(p1.Value); // Contains the new value of the p1 parameter
只是一个小警告,p1 值 属性 只会在请求执行时更改(通过 AsEnumerable
、Load()
或任何强制 Sql执行)