Stai concatenando la pArea parametro nell'SQL senza virgolette. Cioè, il contenuto di @Query che prepari per l'esecuzione è:
SELECT PinCode FROM Areas WHERE AreaName = Teynampet
Da Teynampet non è tra virgolette, viene analizzato come identificatore SQL (n sconosciuto) anziché come stringa. Dovresti:
-
citalo nel tuo SQL:
SET @City = CONCAT(' WHERE AreaName = ', QUOTE(pArea)); -
passalo all'istruzione preparata come parametro:
SET @City = CONCAT(' WHERE AreaName = ?'); SET @param = pArea;e poi:
EXECUTE stmt USING @param;
Tuttavia, perché usare qui le dichiarazioni preparate? La tua procedura può essere riscritta come un semplice SELECT (che solleva la questione se sia necessario utilizzare una procedura memorizzata):
CREATE PROCEDURE mp_test(IN pArea VARCHAR(255))
SELECT PinCode FROM Areas WHERE pArea IN (AreaName, '');
(Nota che ti consiglio di usare NULL invece della stringa vuota '' , nel qual caso il test precedente sarebbe pArea IS NULL OR pArea = AreaName ).