MySql版本5.1.47中的过程和多个查询

时间:2016-11-03 17:09:22

标签: mysql stored-procedures

我有一个存储过程,可以删除3个表中的行。

 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中运行它时,它工作正常。 所以我想知道mydes的oldes版本是否不支持存储过程中的多个查询。

Thansk

1 个答案:

答案 0 :(得分:0)

较旧的MySQL版本(< 5.5.6)不允许在LIMIT中使用变量。存储过程中的多个查询工作正常。