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

MySQL संग्रहीत कार्यविधि सूची से कई पंक्तियाँ सम्मिलित करें

हां, आपको एक लूप की आवश्यकता है, जिसमें आप सूची में मान प्राप्त करने के लिए substring_index() का उपयोग कर सकते हैं। समाधान यह SO विषय :

DELIMITER ;;
CREATE PROCEDURE insert_group_alert(
  IN _some_data_a         VARCHAR(255),
  IN _data_list_b         TEXT,
)
  BEGIN
    DECLARE strLen    INT DEFAULT 0;
    DECLARE SubStrLen INT DEFAULT 0;
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
      ROLLBACK;
    END;
    START TRANSACTION;

    INSERT INTO TableA (
      some_data,
      counter
    )
    VALUES (
      _some_data_a,
      1
    ) -- you do not really need this, since you do not provide an id
    ON DUPLICATE KEY UPDATE
      counter          = counter + 1;

    SELECT last_insert_id()
      INTO @newId;

    do_this:
      LOOP
        SET strLen = CHAR_LENGTH(_data_list_b);

        INSERT INTO TableB (table_a_id, some_data) VALUES(@newId,SUBSTRING_INDEX(_data_list_b, ',', 1));

        SET SubStrLen = CHAR_LENGTH(SUBSTRING_INDEX(_data_list_b, ',', 1))+2;
        SET _data_list_b = MID(_data_list_b, SubStrLen, strLen); --cut the 1st list item out

        IF _data_list_b = '' THEN
          LEAVE do_this;
        END IF;
      END LOOP do_this;

    COMMIT;
  END ;;
DELIMITER ;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक पीडीओ क्वेरी के साथ अप्रत्याशित रूप से PHP मेमोरी सीमा को मार रहा है?

  2. कैसे जांचें कि एक MySQL कनेक्शन एसएसएल एन्क्रिप्टेड है या नहीं?

  3. MS SQL स्क्रिप्ट को Mysql और Oracle में बदलें

  4. गंभीर त्रुटि:अपरिभाषित फ़ंक्शन को कॉल करें session_register ()

  5. अगर मौजूद है तो MySQL को अपडेट करें