我的查询返回多行

时间:2016-05-27 12:30:17

标签: sql function plsql count cursor

我正在研究这个函数是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 个答案:

答案 0 :(得分:0)

您没有在from子句中使用表中的任何列。但是,SQL引擎仍会为每一行返回一行"生成"通过from条款。

假设您使用的是Oracle,只需使用dual而不是表名:

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

大多数其他数据库不需要from子句。