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

mysql संग्रहीत कार्यविधि जो स्वयं को पुनरावर्ती रूप से कॉल करती है

इसका काम केवल mysql संस्करण>=5

. में है

संग्रहीत कार्यविधि घोषणा यह है,

आप इसे थोड़ा सुधार दे सकते हैं, लेकिन यह काम कर रहा है:

DELIMITER $$

CREATE PROCEDURE calctotal(
   IN number INT,
   OUT total INT
)

BEGIN

   DECLARE parent_ID INT DEFAULT NULL ;
   DECLARE tmptotal INT DEFAULT 0;
   DECLARE tmptotal2 INT DEFAULT 0;

   SELECT parentid   FROM test   WHERE id = number INTO parent_ID;   
   SELECT quantity   FROM test   WHERE id = number INTO tmptotal;     

   IF parent_ID IS NULL
    THEN
    SET total = tmptotal;
   ELSE     
    CALL calctotal(parent_ID, tmptotal2);
    SET total = tmptotal2 * tmptotal;   
   END IF;

END$$

DELIMITER ;

कॉलिंग की तरह है (इस चर को सेट करना महत्वपूर्ण है):

SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255; 

CALL calctotal(6, @total);
SELECT @total;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस फ़ील्ड को 1 . से बढ़ाएँ

  2. MySQL में संचयी कुल की गणना कैसे करें

  3. MySQL सीखें - नई प्रौद्योगिकी सप्ताह

  4. SQL अनुक्रमणिका का परिचय

  5. अपने खुद के ऐप पर एडमिन कैसे इनस्टॉल करें