Я пытаюсь сделать следующее из OracleCommand.Parameter
:
Хранимая процедура:
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;
Dim returnDate as Date?
Using Connection = New OracleConnection(connectionString)
Using Command As OracleCommand = Connection.CreateCommand()
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()
If Not CType(Command.Parameters("outDate").Value, INullable).IsNull Then
returnDate = CDate(Command.Parameters("outDate").Value)
End If
End Using
End Using
Однако выдается следующее исключение:
Exception thrown: 'System.InvalidCastException' in Microsoft.VisualBasic.dll
Additional information: Conversion from type 'OracleDate' to type 'Date' is not valid.
Какой смысл OracleDbType.Date, если он не может быть преобразован в тип даты .NET? Как я могу взять свой OracleDbType.Date и передать его из своей функции как .NET Date (или Date ?, я пробовал оба)?