반응형
PHPMYADMIN에서 선언으로 쿼리를 실행하고 싶습니다.
여기 내 쿼리 코드
declare @shopdomain varchar(30);
SET @shopdomain = 'newdomain.com';
UPDATE trans SET tval=REPLACE(name,'olddomain.de', @shopdomain ) WHERE name LIKE 'olddomain.de';
UPDATE settings SET tval=REPLACE(name,'olddomain.de', @shopdomain ) WHERE name LIKE 'olddomain.de';
UPDATE...
PHPMYADMIN에이 오류가 표시됩니다.
#1064 - 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 'declare @shopdomain varchar(30)' at line 1
내가 뭘 잘못하고 있니?
해결 방법
DECLARE
는 저장된 루틴 (프로 시저, 함수, 트리거, 이벤트)의 컨텍스트에서 만 사용 가능합니다.
지역 변수 (이름 앞에 @
없음)를 사용자 (세션) 변수와 혼합하고 있습니다.
지역 변수를 사용하려면 다음과 같이합니다.
DELIMITER $$
CREATE PROCEDURE my_proc()
BEGIN
DECLARE shopdomain VARCHAR(30);
SET shopdomain = 'newdomain.com';
UPDATE trans SET tval = REPLACE(name,'olddomain.de', shopdomain ) WHERE name LIKE 'olddomain.de';
UPDATE settings SET tval=REPLACE(name,'olddomain.de', shopdomain ) WHERE name LIKE 'olddomain.de';
UPDATE ...
END$$
DELIMITER ;
그런 다음 절차를 호출하십시오.
CALL my_proc();
세션 변수를 사용하면 다음과 같은 방식으로 프로 시저를 생성하지 않고 바로 실행할 수 있습니다.
SET @shopdomain = 'newdomain.com';
UPDATE trans SET tval = REPLACE(name,'olddomain.de', @shopdomain ) WHERE name LIKE 'olddomain.de';
UPDATE settings SET tval=REPLACE(name,'olddomain.de', @shopdomain ) WHERE name LIKE 'olddomain.de';
UPDATE ...
참조 페이지 https://stackoverflow.com/questions/21004896
반응형
'MySql' 카테고리의 다른 글
MySQL LINQ의 날짜 차이 논리 (0) | 2020.12.14 |
---|---|
MySQL에서 A로 시작하는 이름을 어떻게 검색합니까? (0) | 2020.12.14 |
MySQL mysql 5.6 용 mysql-connector-java (0) | 2020.12.14 |
MySQL mysql만으로 datetime 필드의 날짜를 업데이트하는 방법 (0) | 2020.12.14 |
MySQL 두 타임 스탬프 사이의 MYSQL 쿼리 (0) | 2020.12.13 |
댓글