본문 바로가기
MySql

MySQL 저장 프로 시저의 MySQL PREPARE 문

by 베이스 공부 2020. 10. 8.
반응형

이 SQL 파일이 있습니다.

USE mydb;

DROP PROCEDURE IF EXISTS execSql;
DELIMITER //
CREATE PROCEDURE execSql (
                     IN sqlq VARCHAR(5000)
                      ) COMMENT 'Executes the statement'
BEGIN
  PREPARE stmt FROM sqlq;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END //
DELIMITER ;          

내가 그것을 실행하려고 할 때

# 고양이 file.sql | mysql -p

나는 얻다

ERROR 1064 (42000) at line 6: 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 'sqlq;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
  END' at line 5

내가 뭘 잘못하고 있죠?

 

해결 방법

 

문자열 리터럴 또는 문의 텍스트가 포함 된 사용자 변수 인 sql 만 준비하고 실행할 수 있습니다. 시험

USE mydb;

DROP PROCEDURE IF EXISTS execSql;
DELIMITER //
CREATE PROCEDURE execSql (
                 IN sqlq VARCHAR(5000)
                  ) COMMENT 'Executes the statement'
BEGIN
  SET @sqlv=sqlq;
  PREPARE stmt FROM @sqlv;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END //
DELIMITER ;      

 

참조 페이지 https://stackoverflow.com/questions/5895383

 

 

반응형

댓글