Вие свързвате pArea параметър в SQL без кавички. Тоест, съдържанието на @Query което подготвяте за изпълнение е:
SELECT PinCode FROM Areas WHERE AreaName = Teynampet
Тъй като Teynampet е без кавички, той се анализира като (n неизвестен) SQL идентификатор, а не като низ. Трябва или:
-
цитирайте го във вашия SQL:
SET @City = CONCAT(' WHERE AreaName = ', QUOTE(pArea)); -
предайте го на подготвената инструкция като параметър:
SET @City = CONCAT(' WHERE AreaName = ?'); SET @param = pArea;и след това:
EXECUTE stmt USING @param;
Въпреки това, защо да използвате подготвени изявления тук? Вашата процедура може да бъде пренаписана като прост SELECT (което повдига въпроса дали изобщо трябва да използвате съхранена процедура):
CREATE PROCEDURE mp_test(IN pArea VARCHAR(255))
SELECT PinCode FROM Areas WHERE pArea IN (AreaName, '');
(Обърнете внимание, че бих ви препоръчал да използвате NULL вместо празния низ '' , в който случай горният тест ще бъде pArea IS NULL OR pArea = AreaName ).