본문 바로가기
MySql

MySQL Declaration PHPMyADMIN

by 베이스 공부 2020. 12. 14.
반응형

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

 

 

반응형

댓글