2011-10-24 13 views
7

im एक संग्रहीत प्रक्रिया है कि गुणकों मामला कथन मैं निम्नलिखित संग्रहीत प्रक्रिया है बनाने का प्रयास कर:Mysql मामला नहीं एक संग्रहीत प्रक्रिया पर मामला वक्तव्य के लिए मिला

BEGIN 
CASE @olds 
WHEN 'emp' THEN 
    CASE @news 
    WHEN 'loc' THEN 
     UPDATE equipos SET pe=pe-1,pg=pg+1 WHERE [email protected]; 
     UPDATE equipos SET pe=pe-1,pp=pp+1 WHERE [email protected]; 
     UPDATE partidos SET `eqgan`[email protected] WHERE [email protected]; 
     UPDATE log_partidos SET `status`[email protected] WHERE `match`[email protected]; 
    WHEN 'vis' THEN 
     UPDATE equipos SET pe=pe-1,pg=pg+1 WHERE [email protected]; 
     UPDATE equipos SET pe=pe-1,pp=pp+1 WHERE [email protected]; 
     UPDATE partidos SET `eqgan`[email protected] WHERE [email protected]; 
     UPDATE log_partidos SET `status`[email protected] WHERE `match`[email protected]; 
    END CASE; 
WHEN 'loc' THEN 
    CASE @news 
    WHEN 'emp' THEN 
     UPDATE equipos SET pe=pe+1,pg=pg-1 WHERE [email protected]; 
     UPDATE equipos SET pe=pe+1,pp=pp-1 WHERE [email protected]; 
     UPDATE partidos SET `eqgan`[email protected] WHERE [email protected]; 
     UPDATE log_partidos SET `status`[email protected] WHERE `match`[email protected]; 
    WHEN 'vis' THEN 
     UPDATE equipos SET pp=pp-1,pg=pg+1 WHERE [email protected]; 
     UPDATE equipos SET pg=pg-1,pp=pp+1 WHERE [email protected]; 
     UPDATE partidos SET `eqgan`[email protected] WHERE [email protected]; 
     UPDATE log_partidos SET `status`[email protected] WHERE `match`[email protected]; 
    END CASE; 
WHEN 'vis' THEN 
    CASE @news 
    WHEN 'emp' THEN 
     UPDATE equipos SET pe=pe+1,pg=pg-1 WHERE [email protected]; 
     UPDATE equipos SET pe=pe+1,pp=pp-1 WHERE [email protected]; 
     UPDATE partidos SET `eqgan`[email protected] WHERE [email protected]; 
     UPDATE log_partidos SET `status`[email protected] WHERE `match`[email protected]; 
    WHEN 'loc' THEN 
     UPDATE equipos SET pp=pp-1,pg=pg+1 WHERE [email protected]; 
     UPDATE equipos SET pg=pg-1,pp=pp+1 WHERE [email protected]; 
     UPDATE partidos SET `eqgan`[email protected] WHERE [email protected]; 
     UPDATE log_partidos SET `status`[email protected] WHERE `match`[email protected]; 
    END CASE; 
END CASE; 
END 

हर im इस प्रक्रिया के बाद मुझे मिल गया क्रियान्वित त्रुटि यह है: "केस स्टेटमेंट के लिए केस नहीं मिला" मैं क्या गलत कर रहा हूं?

+1

यह है ऐसे मामले को ढूंढना जो आपके WHEN कथन में नहीं है? क्या आपने यह देखने के लिए अपने बयान में ईएलएसई जोड़ने की कोशिश की है कि यह कहीं से भी गिर रहा है या नहीं? – Genzume

उत्तर

0

उस त्रुटि का मतलब है कि 'केस' कथन में से कोई एक मैच नहीं मिल सकता है। क्या आप निश्चित रूप से चर पुराने और समाचार में सही मान रखते हैं? प्रत्येक मामले में 'अन्य' में अंतिम 'कब' बदलने की कोशिश करें और देखें कि आपकी प्रक्रिया तब काम करती है या नहीं।

17

यह एक MySQL विशिष्ट समस्या है।
MySQL में, किसी मामले में हमेशा एक वैध मिलान होना चाहिए, इस प्रकार एक ईएलएसई खंड।
और बयान के रूप में मैच के बाद खाली नहीं हो सकता, तो आप इसे तो जैसे एक खाली ब्लॉक के साथ भर सकते हैं:

ELSE BEGIN END; 

तो एक वैध मामला होगा, उदाहरण के लिए:

CASE @news 
    WHEN 'emp' THEN 
    UPDATE equipos SET pe=pe+1,pg=pg-1 WHERE [email protected]; 
    WHEN 'loc' THEN 
    UPDATE equipos SET pp=pp-1,pg=pg+1 WHERE [email protected]; 
    ELSE BEGIN END; 
END CASE; 
संबंधित मुद्दे