Мой запрос возвращает несколько строк

Я работаю над этой функцией pl/sql, где я хочу вернуть одно число, количество выражений.

Это моя функция:

CREATE OR REPLACE FUNCTION media_f(
      p_media in varchar2,
      p_date in TIMESTAMP,
      p_sentiment in varchar2)

RETURN NUMBER
IS

  l_amount NUMBER;
CURSOR c_media IS
  SELECT COUNT() 
  FROM MEDIA
  WHERE MEDIA.DATES = p_date
    AND MEDIA.KIND = p_media
    AND MEDIA.POSITIVE_NEGATIVE = p_sentiment;


BEGIN
     open c_media;
     fetch c_media into l_amount;
     close c_media;

RETURN l_amount;
END;

Когда я пытаюсь использовать его, как это:

select Project.MEDIA_F ('tv', '06-05-13', 'n') 
from MEDIA;

Он возвращает все записи из таблицы либо везде 1 или 0.

1 ответ

  1. В предложении не используются столбцы из таблицыfrom. Однако ядро SQL все равно возвращает одну строку для каждой строки, «сгенерированной» fromпредложением.

    Предполагая, что вы используете Oracle, просто используйте dualвместо имени таблицы:

    select Project.MEDIA_F('tv', '06-05-13', 'n') 
    from dual;
    

    Для большинства других баз fromданных это условие не требуется.