MySQL IF
. कीवर्ड से शुरू होने वाले स्टेटमेंट को नहीं पहचानता है एक वैध SQL कथन के रूप में।
IF
स्टेटमेंट केवल एक कंपाउंड स्टेटमेंट के संदर्भ में काम करता है (अर्थात, स्टेटमेंट्स का एक ब्लॉक BEGIN
के बीच संलग्न है। और END
. वर्तमान में, कंपाउंड स्टेटमेंट केवल एक संग्रहीत प्रोग्राम (संग्रहीत प्रक्रिया, फ़ंक्शन या ट्रिगर) के संदर्भ में समर्थित है।
http://dev.mysql.com/doc/refman /5.5/hi/begin-end.html
परीक्षण के लिए, प्रयास करें...
DELIMITER //
CREATE PROCEDURE usp_test_transaction()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
START TRANSACTION;
-- whatever DML operations and SELECT statements you want to perform go here
IF (1=1) THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END//
DELIMITER ;
CALL usp_test_transaction;
(नोट:मैं यहां इस बात की वकालत नहीं कर रहा हूं कि लेनदेन को संग्रहीत प्रक्रिया के अंदर संभाला जाए। मेरी व्यक्तिगत प्राथमिकता ऐसा नहीं करना है, और इसके बजाय उच्च स्तर पर लेनदेन को संभालना है। लेकिन ऊपर दिए गए उदाहरण को काम करना चाहिए; मेरा मानना है कि MySQL स्टार्ट ट्रांजेक्शन को कॉल करने का समर्थन करता है। , COMMIT और ROLLBACK संग्रहीत कार्यविधि के संदर्भ में।)