Я новичок в PL / SQL и oracle, я использую SQL developer 19 против базы данных Oracle 12 C. Все, что я пытаюсь сделать, как я привык делать в T- SQL, - это выбрать некоторые данные из таблицы, где значение поля даты находится между двумя параметрами хранимой процедуры; ниже хранимой процедуры, которую я использую, которая выдает мне ошибку, говорящую, что я должен "ВЫБРАТЬ В" ??
create or replace PROCEDURE GET_DMR_HALO_VALUES ( START_DATE IN DATE , END_DATE IN DATE )
AS
BEGIN
SELECT
HALO_RECORD_ID ,
ASSET_ID ,
ASSET_NAME ,
NUMERIC_VALUE ,
IS_ENABLED ,
ADDED_BY ,
VALUE_DATE ,
NOTES ,
DATE_ADDED
FROM halo_inputs
WHERE trunc(value_date) BETWEEN START_DATE and END_DATE;
END GET_DMR_HALO_VALUES;
тогда у меня также есть другая проблема ... предполагая, что вышеприведенное работает, я пытаюсь просмотреть возвращенные данные таблицы, вызвав хранимую процедуру в SQL developer следующим образом
DEFINE START_DATE date := TO_DATE('2019-02-12','YYYY-DD-MM');
DEFINE END_DATE date := TO_DATE('2019-02-12','YYYY-DD-MM');
exec GET_DMR_HALO_VALUES(:START_DATE, :END_DATE );
Правильно ли я назвал SP, как указано выше?
ОБНОВЛЕНИЕ
после просмотра этой статьи над стеком Я изменил сохраненный выполните следующую процедуру
create or replace PROCEDURE GET_DMR_HALO_VALUES ( START_DATE IN DATE , END_DATE IN DATE )
AS
c1 sys_refcursor;
BEGIN
open c1 for
SELECT
HALO_RECORD_ID ,
ASSET_ID ,
ASSET_NAME ,
NUMERIC_VALUE ,
IS_ENABLED ,
ADDED_BY ,
VALUE_DATE ,
NOTES ,
DATE_ADDED
FROM halo_inputs
WHERE trunc(value_date) BETWEEN START_DATE and END_DATE;
dbms_sql.return_result(c1);
END;
но являются ли курсоры единственным способом в Oracle получить данные таблицы?
ОБНОВЛЕНИЕ 2 Я также изменил запрос exe c как следует
DECLARE
START_DATE date := TO_DATE('12-02-20','DD-MM-YY');
END_DATE date := TO_DATE('12-02-20','DD-MM-YY');
BEGIN
GET_DMR_HALO_VALUES(START_DATE,END_DATE );
END;
, и это работает, но как заставить разработчика SQL отображать данные в виде таблицы, а не в виде обычного текста?