2016-01-24 3 views
1
CREATE table parent_user 
(userid int auto_increment PRIMARY KEY, 
Username varchar(100) NOT NULL, 
    Password varchar(200) NOT NULL, 
    Email varchar(200) NOT NULL 

); 

EDIT: ОК, так что я сделал некоторые изменения:синтаксис: 1064, при создании хранимой процедуры

CREATE PROCEDURE `parent_reg` (
pUserName varchar(100) 
pPassword varchar(200) 
pEmail varchar(200) 
) 
as 
Begin 
Declare Count int 
Declare ReturnCode int 

Select Count = Count(Username) 
from parent_user where Username = @Username 
If Count > 0 
Begin 
     Set ReturnCode = -1 
    End 
    Else 
    Begin 
     Set ReturnCode = 1 
     insert into parent_user values 
     (pUserName, pPassword, pEmail) 
    End 
    Select pReturnCode as ReturnValue 
    End 

Но я все равно получил тот же error- Ошибка 1064: У вас ошибка в вашей Синтаксис SQL; проверьте руководство, соответствующее версии вашего MySQL-сервера, для правильного синтаксиса для использования рядом с ppassword varchar (200) pEmail varchar (200)) ....

Ошибка синтаксиса равна 'pPassword varchar (200)'

+0

Я думаю, что это из-за слова «хранится», вам не нужно. Вам просто нужна CREATE PROCEDURE – Phiter

+0

Также есть выбор с запятой в строке над процедурой создания, которую idk делает там – Phiter

+0

Во-первых, ваш синтаксис выглядит как странная смесь SQL Server и MySQL. Во-вторых, что такое 'select * from parent_user,' там? –

ответ

0

Это недопустимый синтаксис для MySQL хранимой процедуры. Вывешенный вами код больше похож на синтаксис Microsoft SQL Server (Transact SQL).

Некоторые наблюдения:

MySQL процедура переменные не могут начинаться с @. (Этот символ зарезервирован для пользовательских переменных.)

MySQL не использует тип NVARCHAR. Я считаю, что значение переменной character_set_client в сеансе (на момент создания процедуры) - это то, что управляет набором символов переменных процедуры.

Линия select * from parent_user, до CREATE PROCEDURE выглядит совершенно неуместным.

Отсутствует точка с запятой. INSERT предназначен для таблицы с четырьмя столбцами, но только трех значений, и нет списка столбцов. Множество других странных причудливых синтаксисов.

Если ваша цель состоит в том, чтобы создать хранимую процедуру в MySQL, Вы должны были бы синтаксис ближе к этому:

DELIMITER $$ 

CREATE PROCEDURE parent_reg(p_username VARCHAR(100), 
p_password VARCHAR(200), p_email VARCHAR(200) 
) 
BEGIN 
    DECLARE mycount INT; 
    DECLARE myreturncode INT; 

    SELECT COUNT(pu.username) 
    INTO mycount 
    FROM `parent_user` pu 
    WHERE pu.username = p_username; 

    IF (mycount > 0) THEN 
    SET myreturncode = -1; 
    ELSE 
    SET myreturncode = 1; 
    INSERT INTO `parent_user` (`username`, `password`, `email`) 
    VALUES (p_username, p_password, p_email); 
    END IF; 
    SELECT myreturncode AS `ReturnValue`; 
END$$ 

DELIMITER ; 
+0

ах ок, я понимаю сейчас, огромное спасибо! –

0

Возможно, это сортировка вашей базы данных. При установке SQL Server и выборе сортировки по умолчанию установлен флажок «чувствительность к регистру». Определенные сортировки чувствительны к регистру и будут влиять на ваши запросы (и хранимые процедуры).

Многие поставщики не тестируют свои продукты на серверах с чувствительными к регистру сортировками, что приводит к ошибкам во время выполнения.

Так что попробуйте выбрать между «Имя пользователя» и «UserName»

Смежные вопросы