我是新来的sql和我的大部分培训是在MSSQL,但我正在MYSQL的课。我有一个存储过程给我一个问题。我将分隔符设置为//。存储过程问题
CREATE PROCEDURE AddComment
(
name varchar(50),
emailAddress varchar(50),
Comments text
)
BEGIN
DECLARE ComName varchar(50);
DECLARE ComID int;
SELECT name into ComName;
SELECT ID into ComID from Commenters WHERE names = ComName;
if ComID = NULL
BEGIN
INSERT INTO COMMENTERS ('names', 'emailAddresses') values (name, emailAddress);
SELECT ID into ComID from Commenters WHERE names = ComName;
END
INSERT INTO COMMENTS ('commentersID', 'Comments') values (ComID, Comments);
END;
//
编辑
这是我现在有:
CREATE PROCEDURE AddComment
(
Username varchar(50),
UseremailAddress varchar(50),
UserComment text
)
BEGIN
DECLARE ComName varchar(50);
DECLARE ComID int;
SELECT Username into ComName;
SELECT ID into ComID from Commenters WHERE names = ComName;
if ComID = NULL
BEGIN
INSERT INTO COMMENTERS(names,emailAddresses) values (Username, UseremailAddress);
SELECT ID into ComID from Commenters WHERE names = ComName;
END
INSERT INTO COMMENTS(commentersID, Comments) values (ComID, UserComment);
END;
//
而且我得到的错误是:
ERROR 1064(42000):你有一个错误的SQL语法;检查对应于你的MySQL服务器版本使用附近的正确语法手册“BEGIN INSERT INT Ø评议人(姓名,emailAddresses)值(用户名,USEREMAIL”在行1个
什么想法?
那是什么你得到 – GreyBeardedGeek
我通过学校从命令行运行错误:?这是错误正在打印出来。你的SQL语法有错误;检查对应于您的MySQL服务器版本的手册,以找到正确的语法以在'BEGIN INSE RT INTO COMMENTERS('names','emailAddresses')值(第2行的名称,emailAddres)附近使用 –
尝试将引号从列名,即INSERT INTO COMMENTERS(名称,emailAddresses)值(名称,emailAddresses);为了避免混淆,您可能想要为列名命名参数,例如'name'参数为'p_name'.. – GreyBeardedGeek