use*_*318 5 sql-server .net-core asp.net-core-3.0
使用ASP.Net核心3.0。我的数据库查询有效 - 我可以获得结果集(记录),但如何传递/获取输出参数?还想知道是否有办法获取返回值。
我尝试使用不同的方法来调用 SQL 查询,我唯一能够使用的方法是 FromSqlInterpolated,但对不同的方法持开放态度。
这段代码对我有用,但我想传递一个可以作为输出参数填充的附加参数(当我通过从 SQL Server 中调用存储过程来测试它时,该参数起作用)。
var result = _context.Users
.FromSqlInterpolated($"EXEC mystoredproc {user.Username} ").AsEnumerable().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我尝试在调用之前创建一个变量
string out1 = null;
Run Code Online (Sandbox Code Playgroud)
然后将其包含在调用中,但我无法弄清楚语法,并且不确定此方法是否支持它。
var result = _context.Users
.FromSqlInterpolated($"EXEC mystoredproc {user.Username}, OUTPUT {out1}").AsEnumerable().FirstOrDefault();
Console.WriteLine(out1);
Run Code Online (Sandbox Code Playgroud)
希望有人能给我指出正确的方向 - 想知道如何使用输出参数以及如何获取返回值,而不仅仅是记录集。谢谢。
nma*_*iot -1
接受的答案似乎对我不起作用。不过我最终设法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
Run Code Online (Sandbox Code Playgroud)
只是一个小警告,仅当执行请求时(通过 或任何强制 Sql 执行的内容),p1 值属性AsEnumerable才会Load()更改
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |