Je voegt de pArea
samen parameter in de SQL zonder aanhalingstekens. Dat wil zeggen, de inhoud van @Query
die u voorbereidt op uitvoering is:
SELECT PinCode FROM Areas WHERE AreaName = Teynampet
Sinds Teynampet
zonder aanhalingstekens is, wordt het geparseerd als een (onbekende) SQL-identificatie in plaats van een tekenreeks. U moet ofwel:
-
citeer het in je SQL:
SET @City = CONCAT(' WHERE AreaName = ', QUOTE(pArea));
-
geef het door aan het voorbereide statement als een parameter:
SET @City = CONCAT(' WHERE AreaName = ?'); SET @param = pArea;
en dan:
EXECUTE stmt USING @param;
Maar waarom zou u hier voorbereide verklaringen gebruiken? Uw procedure kan worden herschreven als een eenvoudige SELECT
(wat de vraag oproept of je überhaupt een opgeslagen procedure moet gebruiken):
CREATE PROCEDURE mp_test(IN pArea VARCHAR(255))
SELECT PinCode FROM Areas WHERE pArea IN (AreaName, '');
(Merk op dat ik u aanraad om NULL
te gebruiken in plaats van de lege string ''
, in welk geval de bovenstaande test pArea IS NULL OR pArea = AreaName
zou zijn ).