2016-05-27 4 views
0

私はこの関数は、私は1つの数値、表現の量を返すしたい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

のいずれかどこでもでテーブルからすべてのレコードを返します

答えて

0

from句のテーブルの列を使用していません。ただし、SQLエンジンは、from句によって "生成された"各行に対して1つの行を返します。

だけでテーブル名の代わりにdualを使用し、Oracleを使用していると仮定すると:

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

他のほとんどのデータベースはfrom句を必要としません。

関連する問題