У меня есть скалярная функция, которая возвращает одно значение в SQL Server.Я пытаюсь получить это значение, вызывая ExecuteScalar
, но он всегда возвращает NULL, а C # выдает NullReferenceException
.
Я создал функцию, которая проверяет доступность комнаты;если комната доступна, она должна вернуть roomId
, в противном случае 0
.
Я вызываю эту функцию в C # с использованием ADO.NET, но в этом случае она вызывает исключение.
Код 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
Ожидаемый результат:
- , если доступно помещение, вернуть номер комнаты
- остальное вернуть 0