Конструкция With и Function
Чалышев Максим Михайлович
Учебный тренинг. SQL от новичка до профессионала.
Бесплатные авторские видеокурсы SQL, PLSQL, JAVA
В SQL диалекте Oracle 12C есть возможность определить функцию или процедуру на языке PL/SQL с помощью оператора WITH, используя обычный SQL
Синаксис
Примеры
Вывести на экран тип объекта Перевернуть слова означающие типы объектов в ALL_OBJECTS, ограничить выборку 100 строками
Добавить к идентификатору объекта заданное кол нулей , преобразовать к числу, ограничить выборку 100 строками
Учебный тренинг. SQL от новичка до профессионала.
Бесплатные авторские видеокурсы SQL, PLSQL, JAVA
В SQL диалекте Oracle 12C есть возможность определить функцию или процедуру на языке PL/SQL с помощью оператора WITH, используя обычный SQL
Синаксис
WITH PROCEDURE <NAME_PROCEDURE> BEGIN ... END; FUNCTION <NAME_FUNCTION> BEGIN ... END; SELECT <NAME_FUNCTION> FROM <TABLE>;
Примеры
Вывести на экран тип объекта Перевернуть слова означающие типы объектов в ALL_OBJECTS, ограничить выборку 100 строками
WITH FUNCTION reversive_fnc(p_name VARCHAR2) RETURN VARCHAR2 is i NUMBER; v VARCHAR2(50); begin FOR i IN 1..LENGTH(p_name) LOOP v := v || SUBSTR(p_name, LENGTH(p_name)-i+1, 1); END LOOP; return v; end; SELECT DISTINCT reversive_fnc(object_type) as rname, object_type FROM all_objects WHERE rownum < 101;
Добавить к идентификатору объекта заданное кол нулей , преобразовать к числу, ограничить выборку 100 строками
WITH FUNCTION incid_fnc(p_id NUMBER, p_count NUMBER) RETURN NUMBER is begin return TO_NUMBER(rpad(p_id , p_count, '0')); end; SELECT object_id, incid_fnc(object_id, 10) fn FROM all_objects WHERE rownum < 101