我有一个标量函数,它在 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