SQL

PL SQL Помогите пожалуйста как из этого запроса сделать функцию

SELECT DISTINCT код_врача, имя_врача
FROM врачи
WHERE NOT EXISTS (
SELECT обслуживание.код_врача
FROM обслуживание
WHERE Обслуживание.код_врача = врачи.код_врача);
Чтобы сделать функцию из этого запроса, вам нужно сделать следующее:

1) Определите параметры функции, которые будут использоваться в запросе. Например, в данном случае вам может потребоваться параметр для таблицы "обслуживание" и для таблицы "врачи".

2) Замените названия таблиц и колонок в запросе на параметры функции. Например, вместо "врачи.код_врача" вы можете использовать "table1.column1", а вместо "обслуживание.код_врача" - "table2.column2".

3) Оберните запрос в синтаксис функции, указав имя функции, параметры и тело функции (запрос). Например, вы можете создать функцию следующим образом:

CREATE FUNCTION getUniqueDoctors(table1, column1, table2, column2)
RETURNS TABLE (код_врача INT, имя_врача VARCHAR(255))
BEGIN
RETURN (SELECT DISTINCT код_врача, имя_врача
FROM врачи
WHERE NOT EXISTS (
SELECT обслуживание.код
Денис Вальстен
Денис Вальстен
713
Лучший ответ
Если это PL/SQL, то это Оракул.
А он к нелатинским названиям идентификаторов относится более чем скептически.
Поэтому не получится.
Но если добавить кавычек, то так:

 CREATE OR REPLACE FUNCTION SOME_FUN()
RETURN REF CURSOR
AS
DECLARE
RESULT REF CURSOR;
BEGIN
OPEN RESULT FOR 'SELECT DISTINCT "код_врача", "имя_врача"
FROM "врачи"
WHERE NOT EXISTS (
SELECT "обслуживание"."код_врача"
FROM "обслуживание"
WHERE "Обслуживание"."код_врача" = "врачи"."код_врача")';
RETURN RESULT;
END;
Вы можете сделать этот запрос в функцию следующим образом:
 CREATE OR REPLACE FUNCTION get_distinct_doctors() 
RETURN TABLE (код_врача INTEGER, имя_врача VARCHAR2)
AS
BEGIN
RETURN QUERY
SELECT DISTINCT код_врача, имя_врача FROM врачи WHERE NOT EXISTS ( SELECT обслуживание.код_врача FROM обслуживание WHERE Обслуживание.код_врача = врачи.код_врача);
END;
В этой функции мы создаем табличное значение с двумя столбцами: код_врача и имя_врача. Затем мы используем ключевое слово RETURN QUERY для возврата результата запроса. Таким образом, функция вернет таблицу с кодами и именами всех уникальных врачей, которые не оказывают услуги.
Андрей К.
Андрей К.
605