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

मेरे MySQL CASE/WHEN सिंटैक्स में क्या गलत है?

फिक्स्ड स्टेटमेंट लेकिन तत्काल दूसरे मुद्दे के बारे में आपकी टिप्पणी की समीक्षा करने के बाद, यह स्पष्ट था कि आप इसे संग्रहीत प्रक्रिया या फ़ंक्शन के भीतर उपयोग नहीं कर रहे हैं। flow control statements के लिए दस्तावेज़ीकरण कोड> बहुत ही सूक्ष्मता से बताता है कि उन्हें संग्रहित प्रक्रियाओं/कार्यों के भीतर होना चाहिए।

एक प्रक्रिया के भीतर होने के लिए अपना कोड अपडेट करें, और फिर बस प्रक्रिया को निष्पादित करने के लिए कॉल करें:

USE mysql;

DROP PROCEDURE p;
DELIMITER |
CREATE PROCEDURE p() BEGIN
    CASE (SELECT COUNT(*) FROM user WHERE User = '' AND Host = 'localhost') 
        WHEN 1 THEN
            DROP USER ''@'localhost';
            FLUSH PRIVILEGES;
        ELSE
            SELECT 'no users found!';
    END CASE;
END;
|

CALL p();

यह भी ध्यान दें कि मैंने एक कैच-ऑल ELSE added जोड़ा है खंड मैथा; यदि आप मान नहीं समझ पाते हैं, CASE एक "मामला नहीं मिला" चेतावनी देगा - जो वांछनीय हो भी सकता है और नहीं भी।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. REGEXP प्रदर्शन (LIKE और =के साथ तुलना करें)

  2. शामिल होने की पहली तालिका से सभी पंक्तियों को मजबूर करना

  3. mysql क्वेरी में सही ढंग से बचने वाले डैश (-)

  4. drupal में LOAD DATA INFILE का उपयोग करके csv से db में डेटा कैसे लोड करें?

  5. मैं किसी विशिष्ट महीने के लिए श्रेणियों द्वारा बदली गई/अद्यतन स्थिति की गणना कैसे कर सकता हूं?