2009-04-08 38 views
0

Ich versuche, eine gespeicherte Prozedur in meiner MySQL-Datenbank zu erstellen ist unten code.I usin immer ein error.Please mir helfen zu lösenMySql gespeicherte Prozedur Erstellung Fehler

Meine MySQl Version ist 5.0.51b

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), 
IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
    BEGIN 
    INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) VALUES(firstName,lastName,lname,emailId,countryId,stateId) 
    END 

eRROR:


Fehlercode: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung für die richtige Syntax verwendet in der Nähe von ‚END‘ in Zeile 5 (0 ms genommen)

Antwort

1

Es wird eine zusätzliche Variable in der Werteliste

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
BEGIN 
INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) 
    VALUES(firstName,lastName,lname,emailId,countryId,stateId) 
          ^^^^^^ 
END 

Versuch zu Ihrer MySQL-Server-Version entspricht Entfernen und sehen, ob Sie immer noch den Fehler erhalten und wenn nicht bereits das Trennzeichen ändern.

0

Wie sfossen sagte, entfernen Sie lname.
Und auch ein Semikolon an das Ende des Einsatzes hinzufügen:

 

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
    BEGIN 
    INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) VALUES(firstName,lastName,emailId,countryId,stateId); 
    END 
 
5

Die lname-Sache ist nicht, was die Fehlermeldung über ist. Sie müssen ein anderes Trennzeichen angeben. Das Standardtrennzeichen für MySQL-Befehle ist das Semikolon, aber Semikolons werden in gespeicherten Prozeduren am Ende von Anweisungen verwendet. In diesem Beispiel ändere ich das Trennzeichen auf // und benutze dies, um die Prozedur zu beenden. Dies ermöglicht mir Semikolon innerhalb des Blocks zu verwenden.

DELIMITER // 

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), 
IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
BEGIN 
    INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) VALUES(firstName,lastName,emailId,countryId,stateId); 
END; 
// 

DELIMITER ; 

Sobald Sie das Trennzeichen Bit gelöst haben, würden Sie wahrscheinlich einen Fehler über den INSERT-Befehl und zusätzliche Attribute erhalten (Name zweimal).

+0

Ja ich war auf der Suche nach dieser Antwort. Jetzt funktioniert es. Ich danke euch allen für eure Unterstützung – Shyju

Verwandte Themen