2016-11-03 6 views
0

私は3つのテーブルから行を削除するストアドプロシージャを持っています。プロシージャとMySqlバージョン5.1.47の複数のクエリ

DROP procedure IF EXISTS `Epurer_Documents`; 

DELIMITER $$ 

CREATE DEFINER=`dba_account`@`localhost` PROCEDURE `Epurer_Documents`(IN start_E INTEGER,IN pas_E INTEGER) 
BEGIN 

DELETE gdan from ged_document_annotation_individual as gdan 
    INNER JOIN ged_document_annotation as gda on gdan.id_ged_document_annotation=gda.id_ged_document_annotation 
    INNER JOIN ged_document as gd on gd.id_ged_document=gda.id_ged_document 
    INNER JOIN EpureridsgeFdolder as igf on gd.id_ged_folder = igf.id_ged_folderToEpurer 
    WHERE igf.id_ged_folderToEpurer in 
    (select id_ged_folderToEpurer from 
     (select id_ged_folderToEpurer from EpureridsgeFdolder limit start_E , pas_E) as x); 

DELETE gdrs FROM ged_document_revision_seal as gdrs 
    INNER JOIN ged_document_revision as gdr on (gdrs.id_ged_document_revision_child=gdr.id_ged_document_revision 
    INNER JOIN EpureridsgeFdolder as igf on gd.id_ged_folder = igf.id_ged_folderToEpurer 
    WHERE igf.id_ged_folderToEpurer in 
    (select id_ged_folderToEpurer from 
     (select id_ged_folderToEpurer from EpureridsgeFdolder limit start_E , pas_E) as x); 

DELETE FROM ged_folder WHERE id_ged_folder in (select id_ged_folderToEpurer from (select id_ged_folderToEpurer from EpureridsgeFdolder limit start_E , pas_E) as x); 
END$$ 
DELIMITER ; 

私はそれを実行するとエラーが表示されます: ""、near、pas_E)x)。 gdrsを削除します。 ""、 ですが、MySqlのoutherバージョンで実行すると正しく動作します。 私は古いバージョンのmySQLがストアドプロシージャの複数のクエリをサポートしていないのではないかと思います。

Thansk

答えて

0

古いMySQLバージョン(< 5.5.6)はLIMITでの変数の使用を許可していません。ストアドプロシージャ内の複数のクエリは正常に動作します。

関連する問題