2016-03-30 20 views
0

In meiner Mysql, ich unten gespeicherte Prozedur geschrieben haben Daten in Benutzer-Tabelle einzufügen,MySQL gespeicherte Prozedur in Parameter Ausgabe

DELIMITER $$

DROP PROCEDURE IF EXISTS `CreateUser1`$$ 
CREATE PROCEDURE `CreateUser1`(
    IN Email VARCHAR(50), 
    IN Password1 VARCHAR(50), 
    IN FirstName VARCHAR(50), 
    IN LastName VARCHAR(50), 
    IN AlternateEmail VARCHAR(50), 
    IN PhoneNumber VARCHAR(50), 
    IN Token VARCHAR(500) 
) 

BEGIN 

    IF NOT EXISTS(SELECT user_id FROM `um.user` WHERE `email`=Email)THEN 
     INSERT INTO `um.user`(site_id,email,PASSWORD,alternate_email,first_name,last_name,contact_number, 
        created_on,updated_on,is_active,token,is_verified_email) 
     VALUES 
     (1, Email1 , Password1 ,AlternateEmail, FirstName , LastName ,PhoneNumber,UTC_TIMESTAMP(),UTC_TIMESTAMP(),1,Token,0); 
    END IF; 
END$$ 
DELIMITER ; 

Wenn ich diese Prozedur zu testen, wie unten,

CALL `CreateUser1`('[email protected]' , 'abcdefgh' ,'[email protected]', 'sa' , '' ,'123456789','hasghsdfhgfhgfhdgfhdsgsh'); 

SELECT * FROM `um.user` WHERE email='[email protected]'; 

Es tut nichts.

Es fügt keine Daten in die Tabelle ein, ich habe das Problem herausgefunden.

Die Ausgabe ist im Parameter "Email".

Aber wenn ich den Parameter "Email" zu "Email12" ändere, hat es wie erwartet funktioniert.

Aber ich will nicht in Parameter ändern, da es wird auch eine Veränderung in meinem API sein,

Jetzt möchte ich dieses Problem in sp Ebene zu lösen, wie auch, ich habe auch unter Änderungen versucht in SP, die auch nicht funktioniert hat,

Set @userEmail=Email; 
IF NOT EXISTS(SELECT user_id FROM `um.user` WHERE `email`[email protected])THEN 

Irgendwelche Vorschläge

Grüße Sangeetha

+0

Sollte es nicht mit heißen: ANRUF 'CreateUser1' ('[email protected] ' 'abcdefgh', 'sa',' ',' abc @ gmail.com ',' 123456789 ',' haghhsdfhgfhgfhdgfhdsgsh '); (die AlternateEmail ist nach LastName nicht vor FirstName) – piotrgajow

+0

Beide sind korrekt. – Sangeetha

+0

In MySQL sollte der an eine Stored Procedure übergebene Parametername nicht mit dem Spaltennamen übereinstimmen. Ich habe dieses Problem vor langer Zeit und herausgefunden, dass dies der Grund ist. –

Antwort

0

die Sie interessieren, wenn Sie yo behandeln möchten ur Ausgabe innerhalb der gespeicherten Prozedur selbst, ohne den Namen des Parameters zu ändern,

DELIMITER $$ 
DROP PROCEDURE IF EXISTS `CreateUser1`$$ 
CREATE PROCEDURE `CreateUser1`(
    IN Email VARCHAR(50), 
    IN Password1 VARCHAR(50), 
    IN FirstName VARCHAR(50), 
    IN LastName VARCHAR(50), 
    IN AlternateEmail VARCHAR(50), 
    IN PhoneNumber VARCHAR(50), 
    IN Token VARCHAR(500) 
) 

BEGIN 
    DECLARE Email1 VARCHAR(50); 
    SET Email1 = Email; 
    IF NOT EXISTS(SELECT user_id FROM `um.user` WHERE `email`=Email1)THEN 
     INSERT INTO `um.user`(site_id,email,PASSWORD,alternate_email,first_name,last_name,contact_number, 
        created_on,updated_on,is_active,token,is_verified_email) 
     VALUES 
     (1, Email1 , Password1 ,AlternateEmail, FirstName , LastName ,PhoneNumber,UTC_TIMESTAMP(),UTC_TIMESTAMP(),1,Token,0); 
    END IF; 
END$$ 
DELIMITER ; 

Dies liegt daran, in MySQL, sollten die gleichen sein wie Spaltenname nicht der Name des Parameters auf eine gespeicherte Prozedur übergeben. Hoffe, das löst Ihr Problem :)

Verwandte Themen