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

MySQL:संग्रहीत प्रक्रियाओं में IF / THEN कथन

जहाँ तक मैं देख सकता हूँ आपको कुछ समस्याएँ मिली हैं:

  1. जैसा कि डेविड ने बताया, प्रत्येक कथन को ; . द्वारा समाप्त करने की आवश्यकता है
  2. यदि आप SELECT करते हैं , बेहतर ढंग से सुनिश्चित करें कि यह LIMIT 1 . करके केवल एक मान का चयन कर सकता है; यदि आपके पास min() . जैसा समग्र कार्य है तब केवल एक ही मान निकल सकता है।
  3. यदि आप CREATE PROCEDURE ... . का उपयोग करके प्रक्रिया लिख ​​रहे हैं सिंटैक्स, सेट करना न भूलें DELIMITER $$ CREATE PROCEDURE ... END $$ . से पहले बॉडी और एक DELIMITER ; के बाद।
  4. यदि आपके IF THEN ... END IF . के अंदर कई कथन हैं ब्लॉक करें, उन्हें BEGIN ... END; . के अंदर रखना एक अच्छा विचार है ब्लॉक.
  5. यदि आपके पास एक वापसी मूल्य है, जैसे एजेंसी यहाँ, तो क्यों न इसे एक FUNCTION name (arg1: INTEGER) RETURNS INTEGER बनाया जाए PROCEDURE name (IN arg1 INTEGER, OUT agency INTEGER) . समारोह बहुत अधिक बहुमुखी है।
DELIMITER $$
CREATE PROCEDURE name(arg1 INTEGER, arg2 INTEGER, ...)
BEGIN

  SELECT SET agency = 
    COALESCE((SELECT org_agency_o_id 
            FROM orgs_agencies 
            WHERE org_agency_code = maj_agency_cat) LIMIT 1,
    (SELECT min(org_id) FROM orgs     
    WHERE org_name LIKE CONCAT('U.S.',SUBSTRING(maj_agency_cat,5)))); 

  IF agency IS NULL THEN BEGIN
    -- execute multiple queries   
    INSERT INTO orgs (org_name
                     ,org_name_length
                     ,org_type
                     ,org_sub_types) 
    VALUES (CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5))
           ,LENGTH(CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5)))
           ,'org','Org,GovernmentEntity,Federal,Agency');

    SET agency = LAST_INSERT_ID();
  END; END IF;
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. mysql DataSource के साथ javax.naming.NoInitialContextException

  3. ActiveRecord का उपयोग करके mysql के साथ DISTINCT ON का उपयोग कैसे करें?

  4. Php का उपयोग करके एकाधिक डेटाबेस का उपयोग कैसे करें?

  5. MySQL क्वेरी में टेबल नाम के आसपास बैकटिक का महत्व