Я использую MySQL для управления базой данных.
У меня есть 2 таблицы с именами IDENTITY и OPTIONS в базе данных с именем WIFI.
IDENTITY содержит 2 поля: USERNAME и PASSWORD.
OPTIONS содержит 3 поля: USERNAME, WIFI_SSID и WIFI_PASSWORD.
И есть процедура, принимающая эти переменные в качестве аргумента:
arg01_USERNAME
arg02_PASSWORD
arg03_WIFI_SSID
arg04_WIFI_PASSWORD * 1010 для I ** в ** ** **phpMyAdmin для выполнения этой операции:
Эта процедура должна проверить, соответствуют ли arg01_USERNAME и arg02_PASSWORD данным в IDENTITY.Если данные не найдены, то ничего не делать.В противном случае найдите arg01_USERNAME в таблице OPTIONS и обновите WIFI_SSID и WIFI_PASSWORD с помощью arg03_WIFI_SSID и arg04_WIFI_PASSWORD.Если arg01_USERNAME не найден в OPTIONS, вставьте новую запись в OPTIONS.
Вот 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 сообщает мне, что есть синтаксическая ошибка рядом с частью кода «END IF» (ошибка 1064).
Извините за мойплохой английский.