Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Procedura a sprawdzenie w niej istnieje rekordu
Mephis
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

Ostrzeżenie: (0%)
-----


Witam.

Posiadam taką tablę:
  1. CREATE TABLE `test`.`test` ( `id` INT NOT NULL , `user` INT NOT NULL , `type` ENUM('a','b','c') NOT NULL ) ENGINE = InnoDB;
  2. INSERT INTO `test` (`id`, `user`, `type`) VALUES ('1', '123', 'a'), ('2', '321', 'b');


I taką procedurę:
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `procedura_testowa`(OUT `result` VARCHAR(32), IN `userid` INT(4), IN `type` ENUM('a','b','c'))
  2. BEGIN
  3. SET @qTest = (SELECT `id` FROM `test` WHERE (`user` = userid) AND (`type` = type));
  4.  
  5. IF (@qTest) THEN
  6. SET result = 'jest';
  7. ELSE
  8. SET result = 'nie ma';
  9. END IF;
  10. END


Kiedy wykonam zapytanie:
  1. SELECT `id` FROM `test` WHERE (`user` = 123) AND (`type` = 'a')

Otrzymuję wynik, gdyż taki rekord jest w bazie danych. Kiedy zmieniłbym `type` na np. 'c', to nie otrzymałbym wyniku.
Na tej podstawie sprawdzam w procedurze, czy otrzymałem jakiś wynik (czy znaleziono taki rekord).

Kiedy wykonuję procedurę:
  1. CALL `procedura_testowa`(123, 'c')

Otrzymuję wynik "jest", co nie jest zgodne ze skryptem.

Czy ktoś mnie oświeci, gdzie znajduje się błąd?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:44