就数据库而言,我是一个临时用户。我的任务是创建程序,他们基本上会做一个非常基本的自动保存功能。
之前我已经创建了存储过程,但没有必须检查NULL条目并使用IF语句来确定是否需要执行UPDATE或新的INSERT。
DB: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中,它告诉我这个'结束'错过了一个' 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
答案 0 :(得分:0)
尝试:(伪程序,不编译)
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)