우리의 마이그레이션 기능을위한 sql 스크립트를 만들고 있습니다. 한 magento 인스턴스에서 다른 magento 인스턴스로 데이터를 마이그레이션하려고합니다 (magento의 가져 오기/내보내기가 매우 제한적이기 때문에 순수한 SQL을 사용합니다).MySQL : prepared procedure in stored procedure - 매개 변수 오류 1064
여러 단계에서 수동으로 수행 할 필요가 없도록 표의 AUTO_INCREMENT 값을 동적으로 변경하려는 과제 중 하나입니다. 나는이에 대해 다음 저장 프로 시저를 준비 해당 열 + 1
의 전류 - 최대 값으로 AUTO_INCREMENT 값을 설정하려면 :
DELIMITER $$
CREATE PROCEDURE alter_auto_inc_customer()
BEGIN
SELECT @max := MAX(entity_id)+ 1 FROM customer_entity;
PREPARE stmt FROM 'ALTER TABLE customer_entity AUTO_INCREMENT = ?';
EXECUTE stmt USING @max;
END $$
이 명령은 원활하게 실행. 이후 절차는 단순한 문에 의해 호출해야합니다
CALL alter_auto_inc_customer();
나는 "전화"-statement을 실행하면, 나는 1064 구문 오류가 발생합니다. 그것은 사소한 일이지만 내 삶에 대해 알아 내지 못합니다 ...
ERROR 1064 (42000): 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 '?' at line 1
누구에게 어떤 이슈가 있습니까?
데이터베이스의 여러 테이블에 대해 유사한 명령문을 실행할 수 있어야하므로 하나 이상의 저장 프로 시저로 가져와야합니다.
안녕하세요, 그것은 할 수있는 해결 방법이지만 프로 시저를 사용하고 싶습니다. 내가 말했듯이 다중 테이블로이 작업을 수행해야하며 여러 번의 트리거 대신 한 번의 호출로 모든 작업을 처리하고 싶습니다. –
일부 변경 사항이있는 저장 프로 시저를 추가하여 답변을 수정합니다. –
절차는 매력처럼 작동합니다. 고마워요! –