Estás concatenando el pArea parámetro en el SQL sin comillas. Es decir, el contenido de @Query que preparas para la ejecución es:
SELECT PinCode FROM Areas WHERE AreaName = Teynampet
Desde Teynampet no está entre comillas, se analiza como un identificador SQL (desconocido) en lugar de una cadena. Deberías:
-
cítelo en su SQL:
SET @City = CONCAT(' WHERE AreaName = ', QUOTE(pArea)); -
páselo a la declaración preparada como un parámetro:
SET @City = CONCAT(' WHERE AreaName = ?'); SET @param = pArea;y luego:
EXECUTE stmt USING @param;
Sin embargo, ¿por qué usar declaraciones preparadas aquí? Su procedimiento se puede reescribir como un simple SELECT (lo que plantea la cuestión de si necesita utilizar un procedimiento almacenado):
CREATE PROCEDURE mp_test(IN pArea VARCHAR(255))
SELECT PinCode FROM Areas WHERE pArea IN (AreaName, '');
(Tenga en cuenta que le recomiendo que use NULL en lugar de la cadena vacía '' , en cuyo caso la prueba anterior sería pArea IS NULL OR pArea = AreaName ).