반응형
마리아드 10.3.29 시작...END 문이 DELECT와 함께 작동하지 않습니다.
다음 문장을 Mariadb 10.3.29와 10.3.13에서 실행하는 데 문제가 있습니다.
delimiter |
BEGIN NOT ATOMIC
DECLARE finished int default 0;
DECLARE query varchar(500) default "";
DECLARE curQuery
CURSOR FOR
SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA ,'.', table_name, ' MODIFY COLUMN `type` tinyint(1) DEFAULT NULL NULL COMMENT "test";')
FROM information_schema.tables WHERE table_name = 'test_table';
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET finished = 1;
open curQuery;
executeQuery: LOOP
FETCH curQuery INTO query;
IF finished = 1 THEN
LEAVE executeQuery;
END IF;
prepare stmt from query;
execute stmt;
END LOOP executeQuery;
CLOSE curQuery;
END|
다음 오류가 발생합니다.
이유:
SQL Error [1064] [42000]: (conn=54) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE finished int default 0;
dbeaver 21.3.3 사용
여기 있는 문서들에 따르면: https://mariadb.com/kb/en/using-compound-statements-outside-of-stored-programs/ 에 따르면, 저는 mariadb 10.1.1+의 "스캐너 프로그램" 밖에서 이것을 할 수 있어야 합니다.그러나 저장 프로시저 내에서 실행할 수 있지만 가능하면 일반 SQL에서 실행하고 싶습니다.
잘 부탁드립니다.
필요한 것 같습니다.BEGIN NOT ATOMIC
명시적으로, 이것이 예제가 보여주는 것입니다.
https://mariadb.com/kb/en/begin-end/ :
NOT ATOMIC
저장 프로시저 외부에서 사용할 경우 필요합니다.저장 프로시저 내부 또는 익명 블록 내에서 BEGIN 단독으로 새로운 익명 블록을 시작합니다.
언급URL : https://stackoverflow.com/questions/70947069/mariadb-10-3-29-begin-end-statement-not-working-with-declare
반응형
'sourcecode' 카테고리의 다른 글
GitHub에서 비트 버킷으로 포킹 (0) | 2023.07.08 |
---|---|
Oracle Instant Client를 설치하는 중 (0) | 2023.07.08 |
SQL Server에서 지정된 월, 일 및 연도의 요일 이름을 개별적으로 가져옵니다. (0) | 2023.07.08 |
UIViewController viewDidLoad vs. viewWill표시됨:적정한 분업은 무엇입니까? (0) | 2023.07.08 |
GCC가 .cpp 파일을 C로 컴파일하도록 강제 적용 (0) | 2023.07.03 |