简体   繁体   English

我的查询返回多行

[英]My query returns multiple rows

I am working on this function is pl/sql where I want to return one number, the amount of expressions. 我正在使用的函数是pl / sql,我想返回一个数字,即表达式的数量。

This is my function: 这是我的功能:

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;

When I try to use it like this: 当我尝试像这样使用它时:

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

It return all the records from the table with either everywhere a 1 or a 0. 它返回表中所有位置为1或0的所有记录。

You are not using any columns from table in the from clause. 您没有在from子句中使用来自table的任何列。 However, the SQL engine will still return one row for each row "generated" by the from clause. 但是,SQL引擎仍将为from子句“生成”的每一行返回一行。

Assuming you are using Oracle, just use dual instead of a table name: 假设您使用的是Oracle,只需使用dual而不是表名:

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

Most other databases don't require the from clause. 大多数其他数据库不需要from子句。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM