2012-07-16 18 views
21

मैं क्या इस स्क्रिप्टMYSQL घोषित चर

BEGIN 
DECLARE crs INT DEFAULT 0; 

WHILE crs < 10 DO 
INSERT INTO `continent`(`name`) VALUES ('cont'+crs) 
SET crs = crs + 1; 
END WHILE; 
END; 

मैं इसे तालिका महाद्वीप में 10 मान सम्मिलित करना चाहते हैं, लेकिन दूसरी पंक्ति में एक त्रुटि है साथ कुछ गड़बड़ है नहीं मिलता है।

उत्तर

30

MySQL संग्रहीत प्रक्रिया कोड के अज्ञात ब्लॉक के निष्पादन का समर्थन नहीं करता है।

आपको उस कोड सहित संग्रहीत प्रक्रिया बनाने की आवश्यकता है और फिर इसे आमंत्रित करें।

इसके अलावा, आप अपने सम्मिलित बयानों के अंत में सेमी-कोलन खो रहे थे। मैंने तय किया आप शायद नाम उत्पन्न करने के लिए + के बजाय concat() का उपयोग करना चाहते हैं, लेकिन मैं आपको वह परिवर्तन छोड़ दूंगा।

DELIMITER $$ 

DROP PROCEDURE IF EXISTS insert_ten_rows $$ 

CREATE PROCEDURE insert_ten_rows() 
    BEGIN 
     DECLARE crs INT DEFAULT 0; 

     WHILE crs < 10 DO 
      INSERT INTO `continent`(`name`) VALUES ('cont'+crs); 
      SET crs = crs + 1; 
     END WHILE; 
    END $$ 

DELIMITER ; 

प्रक्रिया आह्वान:

प्रक्रिया बनाएं

CALL insert_ten_rows(); 
39

@ साथ MySQL में चर घोषित करने और :=

SET @crs = 0; // declaration 
--here your query 
@crs := @crs+1 // assignment 

संदर्भ

+0

'शुरू घोषित सीआरएस INT; एसईटी @ सीआरएस = 0; WHILE crs <10 DO INNTERT \ 'महाद्वीप \' (\ 'नाम \') में मूल्य ('cont' + @ crs) SET @crs = crs + 1; अंत WHILE; अंत; 'यह इस तरह से काम नहीं कर रहा है – NiCU

+0

': =' – diEcho

+5

के साथ असाइन करें जो त्रुटि मुझे मिलती है वह कहती है: # 1064 - आपको अपने SQL वाक्यविन्यास में कोई त्रुटि है; 'DECLARE @crs INT' के पास उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाने वाले मैन्युअल की जांच करें – NiCU

संबंधित मुद्दे