语法错误:1064,创建存储过程时

时间:2016-01-24 22:54:17

标签: mysql database stored-procedures syntax

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

 );
编辑:好的,所以我做了一些改动:

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

但我仍然有同样的错误 - 错误1064:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在pPassword varchar(200)pEmail varchar(200)附近使用正确的语法....'

语法错误位于&#p; pPassword varchar(200)'

2 个答案:

答案 0 :(得分:0)

也许这是您数据库的整理。安装SQL Server并选择默认排序规则时,会出现“" case sensitivity"复选框。某些排序规则区分大小写,会影响您的查询(和存储过程)。

许多供应商不会在具有区分大小写的排序规则的服务器上测试他们的产品,这会导致运行时错误。

所以只需尝试选择"用户名"和"用户名"

答案 1 :(得分:0)

这是MySQL存储过程的无效语法。您发布的代码看起来更像Microsoft SQL Server(Transact SQL)语法。

一些观察结果:

MySQL过程变量不能以 var request = require('request'); var cheerio = require('cheerio'); var url = "https://news.ycombinator.com/"; request(url, function (error, response, html) { if (!error && response.statusCode == 200) { var $ = cheerio.load(html); var anchorTags = $('a'); anchorTags.each(function(i,element){ console.log(element["attribs"]["href"]); }); } }); 开头。 (该字符保留给用户定义的变量。)

MySQL不使用@类型。我相信会话中NVARCHAR变量的设置(在创建过程时)是控制过程变量的字符集的。

character_set_client之前的select * from parent_user,行看起来完全不合适。

缺少分号。 CREATE PROCEDURE用于包含四列的表,但只有三个值,并且没有列列表。许多其他奇怪的奇怪语法。

如果您的目标是在MySQL中创建存储过程,那么您需要更接近此语法:

INSERT