Если у вас есть поддерживаемая версия Oracle, вы сможете сделать что-то вроде
CREATE OR REPLACE PROCEDURE get_all_departments( p_result OUT SYS_REFCURSOR )
AS
BEGIN
OPEN p_result
FOR SELECT *
FROM departments;
END get_all_departments;
Тем не менее, вы, как правило, лучше с точки зрения организации, используя пакеты для сбора процедур, которые делают связанные вещи. Например, в вашем случае, как правило, имеет смысл иметь пакет, содержащий все процедуры, относящиеся к отделам (т. Е. create_department
, delete_department
и т. Д.).
И с общей стилистической точки зрения в Oracle более распространено создание представления, которое реализует любую логику, которую вы бы поместили в хранимую процедуру, и запрашивать это представление, а не создавать хранимую процедуру, которая просто выполняет запрос. *