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

Bagaimana cara menulis fungsi mysql dengan nama tabel dinamis?

Pertama seperti yang disebutkan oleh @eggyal ini bukan cara terbaik untuk melakukan sesuatu. Tapi itu bisa dilakukan dengan menggunakan pernyataan yang sudah disiapkan. Yaitu

DROP PROCEDURE IF EXISTS `exampleOfPrepareStatement`;

CREATE DEFINER = `user`@`%` PROCEDURE `exampleOfPrepareStatement`(inTableName VARCHAR(100))
    MODIFIES SQL DATA
    SQL SECURITY INVOKER
BEGIN

    SET @hr1 = CONCAT('
        INSERT INTO `',inTableName,'` (
            -- fields (can use parameters same as table name if needed)
        )
        -- either VALUES () or SELECT here
    ');

    -- Prepare, execute, deallocate
    PREPARE hrStmt1 FROM @hr1;
    EXECUTE hrStmt1;
    DEALLOCATE PREPARE hrStmt1;

END;

Anda tentu saja dapat menambahkan nama bidang dll sesuai kebutuhan, atau menggunakan SELECT atau UPDATE dll. Ini tidak ideal, tetapi akan melakukan apa yang Anda cari.

Saya harus menggunakan ini di beberapa tempat sebelumnya di mana pemeliharaan yang sama dilakukan pada beberapa tabel yang memiliki nama bidang yang berbeda ( / nama tabel ) dan alih-alih menulis fungsi yang sama 20 kali, alih-alih saya menggunakan jenis prosedur tersimpan yang kemudian dapat dipanggil untuk melakukan pengindeksan dll.

Seperti yang juga disebutkan oleh @eggyal , meskipun ini dapat melakukan apa yang Anda minta, itu mungkin tidak melakukan seperti yang Anda butuhkan. Jika Anda dapat memberikan lebih banyak informasi, Anda mungkin mendapatkan solusi yang lebih baik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks multi-bahasa dengan Laravel Scout dan Algolia

  2. MySQL:Kenaikan otomatis kolom sementara dalam pernyataan pilih

  3. mysql perbarui beberapa kolom dengan yang sama sekarang ()

  4. Memeriksa nilai dalam array di dalam satu kueri SQL dengan klausa WHERE

  5. Bagaimana cara menghapus item duplikat di MySQL dengan kumpulan data 20 juta baris?