带有count(*)和if语句的存储过程

时间:2015-02-20 15:50:01

标签: mysql procedure

我的sql代码有问题。

我有一个表friends,其中包含三列user1, user2, pending

user1user2是数据类型int的主键。

phpmyadmin会返回此错误:

MySQL说:#1064 - 你的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在#" Declare var int;附近使用正确的语法;设置var = SELECT COUNT(*)FROM friends WHERE((user1 = id1 A' at line 1

注意 - 我是通过phphmyadmin做的,所以我有 这是我的代码:

Declare var int; 
Set var = SELECT COUNT(*) FROM friends WHERE ((user1 = id1 AND user2=id2) OR (user1 = id2 AND user2=id1));
IF var = 0                                 
 BEGIN
    INSERT INTO friends
                ( user1, user2,pending)
         VALUES (id1, id2,1);
    Print 'Data now added.';
 END
ELSE
 BEGIN
     Print 'Dah! already exists';
 END

2 个答案:

答案 0 :(得分:2)

尝试反转这两行:

...
declare @var int
AS
...

如下:

...
AS
declare @var int
...

答案 1 :(得分:0)

1)所有内容(包括声明)必须位于BEGIN ... END块中。

2)您不需要(也不能)声明@session_veriables,仅local_variables

3)缺少参数。必须在parantheses之间声明它们:proc_name(p1 INT, p2 INT)

4)所有陈述必须以;

终止

5)整个程序应该包含在内:

DELIMITER ||
...
||
DELIMITER ;

除非您通过phpMyAdmin发送。