Anda sedang menggabungkan pArea parameter ke dalam SQL yang tidak dikutip. Yaitu, konten @Query yang Anda persiapkan untuk eksekusi adalah:
SELECT PinCode FROM Areas WHERE AreaName = Teynampet
Sejak Teynampet tidak dikutip, itu diuraikan sebagai pengidentifikasi SQL (n tidak diketahui) daripada string. Anda juga harus:
-
kutip dalam SQL Anda:
SET @City = CONCAT(' WHERE AreaName = ', QUOTE(pArea)); -
meneruskannya ke pernyataan yang disiapkan sebagai parameter:
SET @City = CONCAT(' WHERE AreaName = ?'); SET @param = pArea;lalu:
EXECUTE stmt USING @param;
Namun, mengapa menggunakan pernyataan siap pakai di sini? Prosedur Anda dapat ditulis ulang sebagai SELECT simple sederhana (yang menimbulkan pertanyaan apakah Anda perlu menggunakan prosedur tersimpan sama sekali):
CREATE PROCEDURE mp_test(IN pArea VARCHAR(255))
SELECT PinCode FROM Areas WHERE pArea IN (AreaName, '');
(Perhatikan bahwa saya sarankan Anda menggunakan NULL bukannya string kosong '' , dalam hal ini pengujian di atas adalah pArea IS NULL OR pArea = AreaName ).