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

संग्रहीत प्रक्रिया में गतिशील कर्सर

MySQL मैन्युअल से

हालांकि इसके 2 तरीके हैं।

पहला उन मामलों के लिए है जहां एक समय में केवल एक ही उपयोगकर्ता प्रक्रिया को चलाएगा। डायनेमिक SQL के साथ एक दृश्य बनाने के लिए एक तैयार कथन का उपयोग किया जा सकता है और कर्सर इस सांख्यिकीय रूप से नामित दृश्य से चयन कर सकता है। लगभग कोई प्रदर्शन प्रभाव नहीं है। दुर्भाग्य से, ये दृश्य अन्य उपयोगकर्ताओं के लिए भी दृश्यमान हैं (अस्थायी दृश्य जैसी कोई चीज़ नहीं है), इसलिए यह एकाधिक उपयोगकर्ताओं के लिए काम नहीं करेगा।

समान रूप से, तैयार विवरण में एक अस्थायी तालिका बनाई जा सकती है और कर्सर अस्थायी तालिका से चयन कर सकता है। केवल वर्तमान सत्र ही अस्थायी तालिका देख सकता है, इसलिए एकाधिक उपयोगकर्ता समस्या हल हो जाती है। लेकिन इस समाधान का महत्वपूर्ण प्रदर्शन प्रभाव हो सकता है क्योंकि हर बार खरीद चलने पर एक अस्थायी तालिका बनानी पड़ती है।

निचला रेखा:हमें अभी भी कर्सर को गतिशील रूप से बनाने में सक्षम होने की आवश्यकता है!

mysql फ़ोरम

DELIMITER // 
DROP PROCEDURE IF EXISTS test_prepare// 

CREATE PROCEDURE test_prepare(IN tablename varchar(255), columnname varchar(50)) 
BEGIN 
DECLARE cursor_end CONDITION FOR SQLSTATE '02000'; 
DECLARE v_column_val VARCHAR(50); 
DECLARE done INT DEFAULT 0; 
DECLARE cur_table CURSOR FOR SELECT * FROM test_prepare_vw; 
DECLARE CONTINUE HANDLER FOR cursor_end SET done = 1; 

SET @query = CONCAT('CREATE VIEW test_prepare_vw as select ', columnname, ' from ', tablename); 
select @query; 
PREPARE stmt from @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

OPEN cur_table; 
FETCH cur_table INTO v_column_val; 
WHILE done = 0 DO 
SELECT v_column_val; 
FETCH cur_table INTO v_column_val; 
END WHILE; 
CLOSE cur_table; 

DROP VIEW test_prepare_vw; 

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. दो डुप्लीकेट कॉलम कैसे हटाएं

  2. django.db.utils.OperationalError:(2013, 'हैंडशेक:रीडिंग इनिटल कम्युनिकेशन पैकेट' पर MySQL सर्वर से कनेक्शन खो गया, सिस्टम एरर:0)

  3. क्या जुनीट परीक्षण मामलों के लिए MySQL इन-मेमोरी चलाने का कोई तरीका है?

  4. पीडीओ एसक्यूएल-स्टेट 00000 लेकिन फिर भी त्रुटि?

  5. कॉलम से अवांछित चरित्र हटाना