【发布时间】:2019-07-10 04:10:58
【问题描述】:
我有一个在 SQL Server 中返回一个值的标量函数。我试图通过调用 ExecuteScalar 来获取该值,但它总是返回 NULL 并且 C# 抛出 NullReferenceException。
我创建了一个检查房间可用性的函数;如果房间可用,则返回roomId,否则返回0。
我正在使用 ADO.NET 在 C# 中调用该函数,但在这种情况下,它会引发异常。
ADO.NET 代码:
using (SqlConnection con = new SqlConnection(connectionString))
{
var command = con.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "RoomAvailability";
con.Open();
int returnValue = (int)command.ExecuteScalar();
// The error happens on this line
Console.WriteLine(returnValue.ToString());
}
SQL Server 标量函数:
ALTER FUNCTION RoomAvailability()
RETURNS INT
AS
BEGIN
DECLARE @availability INT
IF EXISTS(SELECT TOP 1 Id FROM Romm_Details WHERE status = 'F')
BEGIN
SET @availability = (SELECT TOP 1 Id FROM Romm_Details WHERE status = 'F')
END
ELSE
BEGIN
SET @availability = 0
END
RETURN @availability //RETURN NULL VALUE
END
预期结果:
- 如果房间可用返回房间 ID
- 否则返回0
【问题讨论】:
-
可能,如果它解决了您的问题,您应该接受一个答案,就像一票感谢一样。 stackoverflow.com/help/someone-answers
标签: c# sql-server ado.net