小弟刚学存储过程,今天试写了一个,出现如下错误,请各位指点一下,非常感谢!
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE SizeCursor Cursor For select Pro_size from tmp_size where id>=BID and id' at line 24 CREATE PROCEDURE create_tmp_slave( Send_ID INT, Sc INT ) BEGIN DECLARE Size varchar( 20 ) ;DECLARE Sqlstr varchar( 2000 ) ;DECLARE Class varchar( 50 ) ;DECLARE Style varchar( 50 ) ;DECLARE Color varchar( 50 ) ;DECLARE Price float;DECLARE Num int;DECLARE UpDateSql varchar( 300 ) ;DECLARE Col int;DECLARE BID int;DECLARE EID int;DROP TABLE IF EXISTS tmp_slave;SET Col =12;SET BID = ( Sc -1 ) * Col +1;SET EID = Sc * Col;TRUNCATE TABLE Tmp_Size;SET UpDateSql = 'Update Tmp_Slave Set Total=0';SET Sqlstr = 'CREATE TABLE tmp_slave (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Code VARCHAR(50) NOT NULL ,Class VARCHAR(50) NOT NULL ,Color
 VARCHAR(50) NOT NULL ,Price FLOAT NOT NULL DEFAULT 0,Total INT NOT NULL DEFAULT 0';INSERT INTO Tmp_Size( Pro_Size ) 
SELECT DISTINCT size.size
FROM size, send_out_detail, goods_info
WHERE send_out_detail.goods_id = goods_info.goods_id
AND goods_info.size_id = size.size_id
AND send_out_detail.send_id = Send_ID
ORDER BY size.size;DECLARE SizeCursor Cursor FOR SELECT Pro_size FROM tmp_size WHERE id >= BID AND id <= EID;//本句报错:错误信息如上OPEN SizeCursor;fetch SizeCursor INTO Size;WHILE(Size IS NOT NULL 
) DO SET Sqlstr = Sqlstr + ',' + Size + ' INT NOT NULL default 0';SET UpDateSql = UpDateSql + '+' + Size;fetch SizeCursor INTO Size;END WHILE;close SizeCursor;SET Sqlstr = Sqlstr + ') ENGINE = InnoDB';Prepare SizeStmt FROM Sqlstr;EXECUTE SizeStmt;Deallocate prepare SizeStmt;END