MySQL声明PHPMyADMIN

App*_*eer 2 php mysql declaration phpmyadmin

我想在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...
Run Code Online (Sandbox Code Playgroud)

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 
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

pet*_*erm 7

  1. DECLARE在存储例程的上下文中可用(过程,函数,触发器,事件)

  2. 您将局部变量(不在@其名称前面)与用户(会话)变量混合在一起

话虽如此,如果你想使用局部变量,你会做这样的事情

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 ;
Run Code Online (Sandbox Code Playgroud)

然后打电话给你的程序

CALL my_proc();
Run Code Online (Sandbox Code Playgroud)

如果使用会话变量,则可以立即执行它,而无需按以下方式创建过程

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 ...
Run Code Online (Sandbox Code Playgroud)