У меня есть хранимая процедура, которая возвращает дату или ноль в параметр команды.Однако у меня возникают трудности с обработкой нулевых возвратов.
Процедура выглядит примерно так:
PROCEDURE GetDate(inParam IN VARCHAR2, outDate OUT DATE) AS
BEGIN
SELECT MAX(DateVal) INTO outDate
FROM Table1
WHERE Col1 = inParam;
EXCEPTION
WHEN no_data_found THEN
outDate:= NULL;
END GetDate;
И мой код VB.NET выглядит так:
Dim returnDate As Date
Connection.Open()
Command.CommandType = CommandType.StoredProcedure
Command.CommandText = "GEN_PACKAGE.GetDate"
Command.Parameters.Add("inParam", inParam).Direction = ParameterDirection.Input
Command.Parameters.Add("outDate", OracleDbType.Date).Direction = ParameterDirection.Output
Command.ExecuteNonQuery()
returnDate = CDate(Command.Parameters("outDate").Value)
Однако, используя это, я получаю исключение Conversion from type 'OracleDate' to type 'Date' is not valid.
на returnDate = CDate(Command.Parameters("outDate").Value)
.
Если я изменю OracleDbType.Date
на DbType.Date
(который я нашел в качестве решения из другого ответа), я получаю Value does not fall within the expected range
наCommand.Parameters.Add("D0131Date", DbType.Date).Direction = ParameterDirection.Output
.
Как я могу вернуть дату для данного ввода, когда моя дата возвращения может быть или не быть нулевой?