2017-12-04 15 views
0

mysqlでストアドプロシージャを作成したいと思います。Mysqlストアドプロシージャテーブル変数、不正な構文エラー

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 

以下DECLARE @TableVar私のコードの近くに不正な構文エラーなどの取得中にエラーを作成するときには、この問題をクリアするために私を助けてください。

+0

一時テーブルを作成しているようですか? –

答えて

0

あなたのクエリが、その後動作している場合、

はこの試してみてください:あなたはこのSPに進む前に、あなたのクエリが最初に働いていることを確認します

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 

を。

関連する問題