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
).