我使用mysql来管理数据库。
在一个名为wifi的数据库中,我有两个名为identity和options的表。
标识包含两个字段:用户名和密码。
选项包含3个字段:用户名、wifi\ ssid和wifi\密码。
有一个程序接受这些变量作为参数:
arg01\u用户名
arg02\u密码
arg03\u wifi\u ssid
arg04\u wifi\u密码
我想在phpmyadmin中构建一个过程来执行此操作:
此过程应检查arg01\u用户名和arg02\u密码是否与标识中的数据匹配。如果找不到数据,则不执行任何操作。否则在表选项中搜索arg01\u用户名,并使用arg03\u wifi\u ssid和arg04\u wifi\u密码更新wifi\u ssid和wifi\u密码。如果在选项中找不到arg01\u用户名,则在选项中插入新记录。
以下是用于定义过程的sql查询:
CREATE DEFINER=`WIFI`@`localhost` PROCEDURE `INSERT`(IN `arg01_USERNAME` INT(20) UNSIGNED, IN `arg02_PASSWORD` VARCHAR(32), IN `arg03_WIFI_SSID` VARCHAR(32) CHARSET utf8, IN `arg04_WIFI_PASSWORD` VARCHAR(32) CHARSET utf8)
NO SQL
IF EXISTS (
SELECT COUNT(*)
FROM `WIFI`.`IDENTITY`
WHERE `USERNAME` = arg01_USERNAME AND `PASSWORD` = arg02_PASSWORD)
THEN
INSERT INTO `WIFI`.`OPTIONS` (
`USERNAME`,
`WIFI_SSID`,
`WIFI_PASSWORD`
) VALUES (
arg01_USERNAME,
arg03_WIFI_SSID,
arg04_WIFI_PASSWORD
)
ON DUPLICATE KEY UPDATE
`WIFI_SSID` = arg03_WIFI_SSID,
`WIFI_PASSWORD` = arg04_WIFI_PASSWORD
END IF;
ENGINE=InnoDB DEFAULT CHARSET=utf8
你能告诉我这个代码有什么问题吗?
当我尝试使用此代码定义过程时,phpmyadmin告诉我在代码的“endif”部分附近有一个语法错误(错误1064)。
对不起,我的英语不好。
1条答案
按热度按时间t40tm48m1#
您需要将分隔符重新定义为其他内容,例如:
$$
,这样解析器在看到;
最后,将分隔符重新定义回;
.尝试: