Łączysz pArea
parametr do niecytowanego kodu SQL. To znaczy zawartość @Query
które przygotowujesz do realizacji to:
SELECT PinCode FROM Areas WHERE AreaName = Teynampet
Od Teynampet
nie jest cytowany, jest analizowany jako (n nieznany) identyfikator SQL, a nie jako łańcuch. Powinieneś:
-
zacytuj go w swoim SQL:
SET @City = CONCAT(' WHERE AreaName = ', QUOTE(pArea));
-
przekaż go do przygotowanej instrukcji jako parametr:
SET @City = CONCAT(' WHERE AreaName = ?'); SET @param = pArea;
a następnie:
EXECUTE stmt USING @param;
Po co jednak używać tutaj przygotowanych zestawień? Twoja procedura może zostać przepisana jako prosty SELECT
(co rodzi pytanie, czy w ogóle trzeba używać procedury składowanej):
CREATE PROCEDURE mp_test(IN pArea VARCHAR(255))
SELECT PinCode FROM Areas WHERE pArea IN (AreaName, '');
(Pamiętaj, że zalecam użycie NULL
zamiast pustego ciągu ''
, w takim przypadku powyższy test to pArea IS NULL OR pArea = AreaName
).