有一个初步的模式表:
我正在尝试创建一个将记录添加到这样的表的过程:
- 如果没有 player_mode 字段值类似于“Player”的记录,则在表中添加一个条目:
INSERT INTO preliminary_schema VALUES (new_name, 'Player1', 0, 0)
.
- 如果有这样的条目,则添加该条目:
INSERT INTO preliminary_schema VALUES (new_name, 'Player2', 0, 0)
.
以下程序:
CREATE PROCEDURE AddPlayer(new_name VARCHAR(30))
BEGIN
CASE (SELECT COUNT(*) FROM preliminary_schema WHERE player_mode LIKE 'Player%')
WHEN 0 THEN INSERT INTO preliminary_schema VALUES (new_name, 'Player1', 0, 0)
WHEN 1 THEN INSERT INTO preliminary_schema VALUES (new_name, 'Player2', 0, 0)
END
给出错误消息:
1064 - 您的请求中有错误。检查您的 MySQL 版本的文档,以了解第 5 行的“WHEN 1 THEN INSERT INTO初步_schema VALUES (new_name, 'Player2', 0, 0)' 周围的正确语法。
请告诉我,我做错了什么?或者用代码编写这个想法的最佳方式是什么?
在 CASE 中,需要传输一个变量而不是游标。用简单的话来说。select 通常从一堆字段中返回一堆记录。在 CASE 中,您必须明确指定该值。见下文。
虽然在你的情况下(虽然我不知道意图),但这样做会更好: