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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top