2017-07-19 7 views
0

最新のmysqlでうまく動作するクエリがあります。ストアドプロシージャにスタック

select Title, Link 
from PlaylistItem 
where PlaylistId = 1; 

返します

+---------------------------+---------------------------------------------+ 
| Title      | Link          | 
+---------------------------+---------------------------------------------+ 
| Regina Spektor - Fidelity | https://www.youtube.com/watch?v=wigqKfLWjvM | 
+---------------------------+---------------------------------------------+ 

をしかし、私は、ストアドプロシージャを書くとき、私は空の結果セットを取得します。

ストアドプロシージャは、次のようになります。

/* Fetch all playlist items for a playlist */ 
delimiter // 
create procedure MixtapeDating.GetPlaylist 
(
    in Id int 
) 
begin 
    select Id, Title, Link 
    from PlaylistItem 
    where PlaylistId = @Id; 
end // 
delimiter ; 

私はこれのような手順を実行します。session variables、プロシージャレベルの変数に格納されていないのmysql変数で

call GetPlaylist(1); 
+0

どのように手順を実行しますか? –

答えて

1

@で始まるを、そう@idがありますidと同じではありません。さらに、idもフィールド名なので、パラメータの名前を変更する必要があります。

delimiter // 
create procedure MixtapeDating.GetPlaylist 
(
    in var_Id int 
) 
begin 
    select Id, Title, Link 
    from PlaylistItem 
    where PlaylistId = var_Id; 
end // 
delimiter ;