Это уничтожает меня ....
У меня есть процедура Oracle, как показано ниже: (это мой последний вариант)
create or replace PROCEDURE MANAGEMENTFEES
(
STARTDATE IN VARCHAR2
, ENDDATE IN VARCHAR2
, cursor_ OUT sys_refcursor
) AS
BEGIN
OPEN cursor_ FOR
select PR.PRNUM
FROM MAXIMO.PR
WHERE PR.ISSUEDATE > to_date(STARTDATE) AND PR.ISSUEDATE < to_date(ENDDATE)
END MANAGEMENTFEES;
Я запрашиваю его, используя следующее.Чистый код.
OracleConnection connection = getConnection();
connection.Open();
string startDate = new DateTime(2019, 1, 1).ToString("dd-MMM-yy");
string endDate = new DateTime(2019, 5, 1).ToString("dd-MMM-yy");
OracleDataAdapter da = new OracleDataAdapter();
OracleCommand cmd = new OracleCommand();
cmd.Connection = connection;
cmd.CommandText = "ORACLE.MANAGEMENTFEES";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("STARTDATE", OracleDbType.Varchar2).Value =startDate;
cmd.Parameters.Add("ENDDATE", OracleDbType.Varchar2).Value = endDate;
cmd.Parameters.Add("cursor_", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
Это дает мне пустую таблицу данных, но в ней есть заголовки.Так что это говорит мне, что запрос просто не дает никаких результатов.Я изменял параметры даты, используя несколько ответов stackoverflow, но я не получаю.*
Справка?
ОБНОВЛЕНИЕ - Добавлен код с жестко закодированными датами
create or replace PROCEDURE MANAGEMENTFEES
(
STARTDATE IN DATE
, ENDDATE IN DATE
, cursor_ OUT sys_refcursor
) AS
BEGIN
OPEN cursor_ FOR
select PR.PRNUM
FROM MAXIMO.PR
WHERE PR.ISSUEDATE > '01-JAN-19' AND PR.ISSUEDATE < '01-MAY-19'
ORDER BY ISSUEDATE ASC;
END MANAGEMENTFEES;