2016-08-06 14 views
1
DELIMITER $$ 
DROP PROCEDURE IF EXISTS `insert_or_update`$$ 
CREATE PROCEDURE insert_or_update(
IN username VARCHAR(70), 
    IN score INT, 
IN titlein VARCHAR(70) 

) 
begin 
IF EXISTS (SELECT * FROM two_player WHERE title=titlein and user1!=username and user2='') THEN 
    UPDATE two_player SET score12=score , user2=username WHERE title=titlein and user1!=username and user2='' limit 1; 
ELSE 
    INSERT INTO two_player (user1,score11,title) values (username, score, titlein); 
END if; 
END$$  
DELIMITER ; 
call insert_or_update('sara',20,'math'); 

Ich erstelle eine Prozedur. Aber wenn ich versuche, es zu nennen ich diese Fehlermeldung:# 1305 - PROCEDURE existiert nicht in mysql

#1305 - PROCEDURE u941310304_menu.insert_or_update does not exist 

Was ist los?

+0

Versuchen Sie ersetzen '$$' mit '//' –

+0

es nicht funktionierte. –

Antwort

0

Ich testete Sie Code und der Aufruf der Prozedur funktioniert.

Ihre Standarddatenbank ist u941310304_menu, es scheint, dass Sie die Prozedur in einer anderen Datenbank erstellen. Sie können die Prozedur erstellen, die die Zieldatenbank angibt.

DELIMITER $$ 
DROP PROCEDURE IF EXISTS `u941310304_menu`.`insert_or_update`$$ 
CREATE PROCEDURE `u941310304_menu`.insert_or_update(
[...] 

Wenn das Verfahren in einer anderen Datenbank ist, müssen Sie den DB-Namen als Präfix angeben:

call `another_database`.insert_or_update('sara',20,'math');