mySQL stored procedure in cui la clausola problema
-
23-08-2019 - |
Domanda
Ho una stored procedure mySql che assomiglia a questo -
delimiter |
create procedure GetEmployeeById(in ID varchar(45))
begin
select id,
firstName,
lastName,
phone,
address1,
address2,
city,
state,
zip,
username,
password,
emptypeid
from myschema.tblemployees t
where
t.id=ID limit 1;
end |
delimiter;
Se non ho il limite 1 in luogo, esso restituisce sempre tutte le righe della tabella - con il valore di id di ogni record impostato al parametro ID. Perché non posso semplicemente usare dove id = ID, e perché è restituire tutti i record quando lo faccio? Quali sono le implicazioni di me usando limite 1? Perché sono di programmazione su una notte di sabato?
Soluzione
A causa, è confrontando t.id con se stesso, che sarà sempre vero. Chiamate il vostro parametro qualcosa di formale d'altro.
Altri suggerimenti
I nomi delle colonne in MySQL non sono case-sensitive. La colonna id
nella query pelli il parametro denominato ID
, così il vostro clausola where
è molto usare due espressioni diverse per riferirsi alla stessa colonna. E, naturalmente, il valore di una colonna è sempre uguale a se stessa, in modo che tutti la partita record. Utilizzare un nome diverso per il parametro di input.