Mysql存储过程表变量,语法错误不正确

时间:2017-12-04 09:40:51

标签: mysql

我想在mysql中创建一个存储过程。但是在DECLARE @TableVar下面的代码

附近创建错误的语法错误时会出现错误
CREATE PROCEDURE `testproc`()
BEGIN
DECLARE @TableVar TABLE
(Col1 VARCHAR(100),
Col2 VARCHAR(100),
Col3 VARCHAR(100),
Col4 VARCHAR(100),
Col5 VARCHAR(100),
Col6 VARCHAR(100),
Col7 VARCHAR(100),
Col8 VARCHAR(100),
Col9 VARCHAR(100));

  FOR v_row AS SELECT art_no as Article,barcode as Barcode,i.item_name,b.brand_name,s.size_name,sd.quantity,mrp,mlp,si.received_date,si.gino,si.inv_no,sd.brand_supplier_id,bs.name as party_name FROM stock_inward_details sd left join stock_inward si on sd.inv_id=si.id left join items i on i.id=sd.item_id left join size s on sd.size_id=s.id left join brands b on sd.brand_id=b.id left join brand_supplier bs on sd.brand_supplier_id=bs.id where si.received_date<='2017-11-30'  order by si.id
    DO
      INSERT INTO @TableVar VALUES (Article,Barcode,item_name,brand_name,size_name,quantity,mrp,gino,party_name);
    END FOR
     SELECT *
FROM @TableVar
END

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果您的查询正常,

试试这个:

CREATE PROCEDURE testproc()

BEGIN

    DECLARE done INT DEFAULT FALSE;
    Declare Article_var VARCHAR(100);
    Declare Barcode_var VARCHAR(100);
    Declare item_name_var VARCHAR(100);
    Declare brand_name_var VARCHAR(100);
    Declare size_name_var VARCHAR(100);
    Declare quantity_var VARCHAR(100);
    Declare mrp_var VARCHAR(100);
    Declare gino_var VARCHAR(100);
    Declare party_name_var VARCHAR(100);


    DECLARE  dec_cur  CURSOR FOR SELECT art_no as Article,barcode as Barcode,i.item_name,b.brand_name,s.size_name,sd.quantity,mrp,mlp,si.received_date,si.gino,si.inv_no,sd.brand_supplier_id,bs.name as party_name FROM stock_inward_details sd left join stock_inward si on sd.inv_id=si.id left join items i on i.id=sd.item_id left join size s on sd.size_id=s.id left join brands b on sd.brand_id=b.id left join brand_supplier bs on sd.brand_supplier_id=bs.id where si.received_date<='2017-11-30'  order by si.id;



    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;

    create TEMPORARY table temp_temptable( Col1 VARCHAR(100),Col2 VARCHAR(100),Col3 VARCHAR(100),Col4 VARCHAR(100),Col5 VARCHAR(100),Col6 VARCHAR(100),Col7 VARCHAR(100),Col8 VARCHAR(100),Col9 VARCHAR(100));

    OPEN dec_cur;


    REPEAT

    FETCH dec_cur INTO Article_var,Barcode_var,item_name_var,brand_name_var,size_name_var,quantity_var,mrp_var,gino_var,party_name_var;

                    insert into temp_temptable (Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9) values(Article_var,Barcode_var,item_name_var,brand_name_var,size_name_var,quantity_var,mrp_var,gino_var,party_name_var);

    UNTIL done END REPEAT;


    select * from temp_temptable;

    drop temporary table if exists temp_temptable;
    CLOSE  dec_cur;



END

在继续使用此SP之前,请确保您的查询正常工作。