Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Membuat Query Dinamis di Stored Procedure MySQL

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Adakah yang bisa menjelaskan kunci asing MySQL?

  2. Pencarian teks lengkap MySQL pada beberapa tabel dengan bidang yang berbeda

  3. Metode tidak ditemukan di kelas

  4. Bagaimana cara mengetahui dari tabel mana hasil berasal saat menggunakan UNION di MySQL

  5. Memisahkan nilai mysql menjadi beberapa bagian yang tidak diketahui