2017-07-19 2 views
0

Ich habe eine Abfrage, die gut funktioniert in der neuesten MySQL.in einer gespeicherten Prozedur stecken

select Title, Link 
from PlaylistItem 
where PlaylistId = 1; 

, die zurückgibt:

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

Aber wenn ich eine gespeicherte Prozedur schreiben, erhalte ich eine leere Ergebnismenge.

Die gespeicherte Prozedur sieht wie folgt aus:

/* 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 ; 

ich das Verfahren wie so laufen:

call GetPlaylist(1); 
+0

Wie führen Sie die Prozedur aus? –

Antwort

1

In mysql Variablen mit vorangestelltem @ sind session variables, nicht Prozedurebene Variablen gespeichert, so @id ist nicht dasselbe wie id. Außerdem ist id auch ein Feldname, daher müssen Sie Ihren Parameter umbenennen.

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