Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कैसे गतिशील तालिका नाम के साथ एक mysql समारोह लिखने के लिए?

सबसे पहले जैसा कि @eggyal ने उल्लेख किया है, यह चीजों के बारे में जाने का सबसे अच्छा तरीका नहीं है। लेकिन यह तैयार बयानों का उपयोग करके किया जा सकता है। यानी

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;

आप निश्चित रूप से आवश्यकतानुसार फ़ील्ड नाम आदि जोड़ सकते हैं, या एक चयन या अद्यतन आदि का उपयोग कर सकते हैं। यह आदर्श नहीं है, लेकिन आप जो खोज रहे हैं वह करेंगे।

मुझे इसे कुछ स्थानों पर उपयोग करना पड़ा है, जहां एक ही रखरखाव कई तालिकाओं पर किया जा रहा है, जिसमें अलग-अलग फ़ील्ड नाम (/ तालिका नाम) हैं और इसलिए एक ही फ़ंक्शन को 20 बार लिखने के बजाय, मैं इस प्रकार की संग्रहीत प्रक्रिया का उपयोग करता हूं जो फिर अनुक्रमण आदि करने के लिए बुलाया जा सकता है।

जैसा कि @eggyal द्वारा भी उल्लेख किया गया है, जबकि यह आपके द्वारा पूछे जाने पर ऐसा कर सकता है, हो सकता है कि यह आपकी आवश्यकता के अनुसार न हो। यदि आप अधिक जानकारी प्रदान कर सकते हैं तो आपको एक बेहतर समाधान मिल सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UTF8 टेबल पर latin1 वर्णों को UTF8 में बदलें

  2. क्या 'IS DISTINCT FROM' एक वास्तविक MySQL ऑपरेटर है?

  3. FIND_IN_SET () बनाम IN ()

  4. मूवी डेटाबेस कैसे डिज़ाइन करें?

  5. लापता अनुक्रम अंतराल खोजें mysql