2 c# sql-server stored-procedures
我有一个应用程序,从存储过程获取成绩名称和传递参数.这适用于我的成绩表中没有成绩名称的情况.我是否需要修改参数以使它们接受null和/或我是否需要修改将这些参数分配给C#参数的位置,以便我可以接受一个值或null?
我有这个存储过程.这个问题缩短了:
CREATE PROCEDURE sp_mark_test
@GradeName NVARCHAR(10) OUTPUT,
@GradePass BIT OUTPUT
AS
BEGIN
-- Example only, real code does not hard code in 99
SELECT top 1 @GradeName = Grade.Name, @GradePass = Grade.Pass
FROM AdminTest
WHERE TestId = 99
END
Run Code Online (Sandbox Code Playgroud)
这是我的C#代码:
var sql = @"dbo.sp_mark_test @GradeName OUT,
@GradePass OUT";
SqlParameter[] parameters = new SqlParameter[] {
new SqlParameter("@GradeName", SqlDbType.NVarChar) { Direction = ParameterDirection.Output,Size = 10 },
new SqlParameter("@GradePass", SqlDbType.Bit) { Direction = ParameterDirection.Output }
};
await db.Database.ExecuteSqlCommandAsync(sql, parameters);
var GradeName = (string)parameters[1].Value;
var GradePass = (Boolean)parameters[2].Value;
Run Code Online (Sandbox Code Playgroud)
按照要求,而这仅仅是一个快速的答案,考虑使用DBNull如
cmd.Parameters.AddWithValue("@closeDate", DBNull.Value);
Run Code Online (Sandbox Code Playgroud)
或用它进行比较.
DBNull类上的MSDN页面.它的代码片段如下:
if (! DBNull.Value.Equals(row[fieldName]))
return (string) row[fieldName] + " ";
else
return String.Empty;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |