Задать вопрос
@nurzhannogerbek

Как правильно в хранимой процедуре выполнить SELECT?

Здравствуйте, товарищи! Использую Oracle 12c.

Пытаюсь написать хранимую процедуру. На вход она принимает 2 параметра, которые используются в простом запросе на выборку. Запрос возвращает все записи за определенный период.

Вопросы:
1) Нужно ли в качестве выходных параметров прописывать все столбцы? К примеру в моем случаи количество столбцов равна 15.
2) Так как запрос возвращает больше одной записи, нужно установить курсор, я правильно понимаю? Как его правильно прописать в хранимой процедуре? Могли бы вы привести пример.

SQL:
SELECT * FROM TABLE_NAME
WHERE CREATE_DATE BETWEEN TO_DATE(FIRST_DATE, 'YYYY-MM-DD') AND TO_DATE(SECOND_DATE , 'YYYY-MM-DD')
  • Вопрос задан
  • 480 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@protven
Зачем вам именно процедура ? По описанию кажется что достаточно функции. Если надо засунуть в оракловый пакет - то функцию тоже можно. И плохо писать "select *", перечисляйте параметры которые нужны явно. Я бы писал примерно так.
/*
 * Заголовок
 */
function get_params_from_table (p_param1 in number,
          p_param2 in number) return TCursor;
/
/*
 * Тело
 */
function get_params_from_table (p_param1 in number,
          p_param2 in number) return TCursor
is
  c_ret TCursor;
begin
  open c_ret for
SELECT param1, param2, param3 FROM TABLE_NAME
WHERE CREATE_DATE BETWEEN TO_DATE(FIRST_DATE, 'YYYY-MM-DD') AND TO_DATE(SECOND_DATE , 'YYYY-MM-DD');

  return c_ret;
end;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы