MySQL声明PHPMyADMIN

4

我希望在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 

我做错了什么?

1
http://dev.mysql.com/doc/refman/5.0/en/declare.html - Rottingham
我相信你需要声明一个变量:shopadmin varchar(30) DEFAULT 'newdomain.com'(不包括@符号)。 - Rottingham
1个回答

8
  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 ;

然后调用您的过程。
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 ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接