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)
我做错了什么?
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 ;
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)