2017-09-25 7 views
0

好き嫌いに基づいて週別ランクを選択する手順をとった。 私のSQLクエリは、以下のようである:oracle sqlで週間ランキングを表示する手順を作成する

create or replace procedure select_rank 
is 
begin 
    select count(billboard_user.user_idx) as likes, music.hit 
    from billboard_user, user_like_music, music 
    where billboard_user.user_idx = user_like_music.user_idx 
    and user_like_music.music_idx = music.music_idx 
    group by music.hit 
    order by count(billboard_user.user_idx) desc, music.hit desc; 

end select_rank; 
/

私が手続きを行うことができましたが、Oracleはエラー

PLS-00428を示しています。INTO句このSELECT文

に期待されています

私はこれを試しました:

create or replace procedure select_rank 
    (v_rank number, 
    v_title music.title%type, 
    v_cnt number, 
    v_release_date music.release_date%type, 
    v_hit music.hit%type) is 
begin 
    select rank() over (order by count(billboard_user.user_idx) desc) as rank, 
    music.title, music.release_date, count(billboard_user.user_idx) as likes, music.hit 
    into v_rank, v_title, v_cnt, v_release_date, v_hit 
    from billboard_user, user_like_music, music 
    where billboard_user.user_idx = user_like_music.user_idx 
    and user_like_music.music_idx = music.music_idx 
    group by music.title, music.hit, music.release_date 
    order by count(billboard_user.user_idx) desc, music.hit desc; 

    DBMS_OUTPUT.PUT_LINE('v_rank: ' || v_rank); 
    DBMS_OUTPUT.PUT_LINE('v_title: ' || v_title); 
    DBMS_OUTPUT.PUT_LINE('v_cnt: ' || v_cnt); 
    DBMS_OUTPUT.PUT_LINE('v_release_date: ' || v_release_date); 
    DBMS_OUTPUT.PUT_LINE('v_hit: ' || v_hit); 
end select_rank; 
/

しかし、うまくいきません。どうすれば修正できますか?

答えて

0

あなたは、選択された各変数のintoが必要になります。

declare 
    v_title MUSIC.TITLE%type; 
    v_cnt number; 
    v_hit music.hit%type; 
begin 
    select music.title, count(melon_user.user_idx) as likes, music.hit 
    into v_title, v_cnt, v_hit 
    . . . 

注:FROM句の

  • 決して使用コンマ。 常には、適切で明示的なJOIN構文を使用します。
  • 通常、これはストアドプロシージャのアウト変数になります。
  • ストアドプロシージャではなく、ビューを使用するだけで、必要な操作を行うことができます。
+0

これらの変数を追加しましたが、この式のV_RANK式をSELECT/FETCHステートメントのINTOターゲットとして使用することはできません。 – user19283043

+0

面白いです。この回答のコードサンプルには 'v_rank'というものは何もありません。 –

関連する問題