就数据库而言,我是一个临时用户。我的任务是创建程序,他们基本上将执行非常基本的自动保存功能。
我以前创建过存储过程,但都没有限制必须检查 NULL 条目并使用 IF 语句来确定是否需要完成更新或新的插入。
数据库:MySQL 编辑:MYSQL WorkBench
这是我的程序:
CREATE DEFINER=`appuser`@`15.15.15.%` PROCEDURE `test `(
id varchar(45),
q01 varchar(2),
a01 varchar(45),
…
q06 varchar(2),
a06 varchar(45)
)
BEGIN
DECLARE _nullCheck VARCHAR(25);
SET _ nullCheck = (SELECT statement to check for null entries));
IF (_nullCheck) THEN
BEGIN
UPDATE statement
END;
ELSE
BEGIN
INSERT statement
END;
END;
在我的 MySQL Workbench 中,它告诉我这个“END”缺少一个“IF”
我在查看有关 IF 和存储过程的其他线程后构建了我的存储过程,这就是我想出的。
提前感谢您的任何建议或帮助。
编辑更正:
CREATE DEFINER=`appuser`@`15.15.15.%` PROCEDURE `test `(
id varchar(45),
q01 varchar(2),
a01 varchar(45),
…
q06 varchar(2),
a06 varchar(45)
)
BEGIN
DECLARE _nullCheck VARCHAR(25);
SET _ nullCheck = (SELECT statement to check for null entries));
IF (_nullCheck) THEN
UPDATE statement
ELSE
INSERT statement
END IF;
END
最佳答案
尝试:(程序的伪代码,不编译)
mysql> DELIMITER //
mysql> CREATE DEFINER=`appuser`@`15.15.15.%` PROCEDURE `test` (
-> id varchar(45),
-> q01 varchar(2),
-> a01 varchar(45),
-> …
-> q06 varchar(2),
-> a06 varchar(45)
-> )
-> BEGIN
-> DECLARE _nullCheck VARCHAR(25);
-> SET _ nullCheck = (SELECT statement to check for null entries));
-> IF (_nullCheck) THEN
-> BEGIN
-> UPDATE statement
-> END;
-> ELSE
-> BEGIN
-> INSERT statement
-> END;
-> END IF;
-> END//
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
更新
mysql> DROP PROCEDURE IF EXISTS `test`;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> DELIMITER //
mysql> CREATE PROCEDURE `test` (
-> id varchar(45),
-> q01 varchar(2),
-> a01 varchar(45),
-> q06 varchar(2),
-> a06 varchar(45)
-> )
-> BEGIN
-> DECLARE `_nullCheck` VARCHAR(25);
-> SET `_nullCheck` := (SELECT 'TRUE');
-> IF (`_nullCheck` = 'TRUE') THEN
-> SELECT 'UPDATE';
-> ELSE
-> SELECT 'INSERT';
-> END IF;
-> END//
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> CALL `test`(NULL, NULL, NULL, NULL, NULL);
+--------+
| UPDATE |
+--------+
| UPDATE |
+--------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
关于php - 存储过程 'IF' 语句 + 'UPDATE' 或 'INSERT' 基于空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44524353/