MySQL创建存储过程出错

栩风 2009-10-05 02:31:32
在MySQL5.0中船舰存储过程通不过,提示:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 54

实在找不出哪里错了,请高手指点一下

代码如下:

CREATE DEFINER=`root`@`localhost` PROCEDURE `forum_register`(
in email varchar(30),
in password varchar(16),
in userName char(8),
in qq char(10),
in securityQuestion1 varchar(40),
in securityQuestion2 varchar(40),
in securityAnswer1 varchar(40),
in securityAnswer2 varchar(40),
in headPicture blob,
in registerTime datetime,
in participatedTopicsCount int,
in createdTopicsCount int,
in managingSectionID smallint,
in currentUploadSize float,
in state char(1)
)
begin
insert into forum_users(
用户名,
邮箱,
参与主题数,
发起主题数,
密码,
QQ,
头像,
注册时间,
密保问题1,
密保答案1,
密保问题2,
密保答案2,
管理版块ID,
当前上传容量,
状态


)
values(
userName,
email ,
participatedTopicsCount ,
createdTopicsCount,
password,
qq,
headPicture ,
registerTime,
securityQuestion1,
securityAnswer1 ,
securityQuestion2 ,
securityAnswer2,
managingSectionID,
currentUploadSize,
state
);
SELECT LAST_INSERT_ID();
end
...全文
237 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
栩风 2009-10-06
  • 打赏
  • 举报
回复
谢谢各位热心的帮助,不过可能是MySQL有问题了吧,我今天把MySQL重装了,以前是5.0的,现在换成了5.1的,存储过程调用没问题了。
nianzhang747 2009-10-05
  • 打赏
  • 举报
回复
应该是驱动的加载问题吧 你用的什么驱动用mysql知道的driver试试
栩风 2009-10-05
  • 打赏
  • 举报
回复
我用的MySQl5.0,connector也是5.0的,用root用户登录,本地机登录,执行insert 语句都是可以的,不知哪个地方用的不对,还是什么地方配置有问题,或是MySQL的支持问题。
ACMAIN_CHM 2009-10-05
  • 打赏
  • 举报
回复
1。职java 中你用的登录用户是什么?
2。 是在同一客户机上登录吗? (从不同的IP联MYSQL会有不同的权限)
3。你的java connector 的版本是否兼容?
栩风 2009-10-05
  • 打赏
  • 举报
回复
我是这样调用的:

callableStatement=con.prepareCall(cmdstr);
callableStatement.executeQuery();

mysql中有proc表,而且forum_register也在里面
阿_布 2009-10-05
  • 打赏
  • 举报
回复
命令行中复制:只要选中要复制的文本,按回车就可以。
怎么提示错误信息时function?你是怎么调用的?
检查一下mysql数据库中有没有proc表。
栩风 2009-10-05
  • 打赏
  • 举报
回复
而且在程序中调用出现如下异常
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: FUNCTION forum_register does not exist
会什么会出现找不到存储过程呢?
栩风 2009-10-05
  • 打赏
  • 举报
回复
加了换界符后存储过程可以创建成功,Navicat中执行下面的SQL语句也能成功,数据也进去了,
call forum_register('1','2','3','463127310','1','1','2','2',null,'2009-010-05 15:25:00',0,0,null,1024,'0');

但在命令行就是不行,提示:
ERROR 1457 (HY000): Failed to load routine aiforumdb.forum_register.The table mysql.proc is missing, corrupt, or contains bad data(internal code -6)
mysql>



顺便问句,怎么把mysql命令行的内容复制下来,我用鼠标右键【标记】了然后选中要复制的内容,按Ctrl+c,然后粘贴的数据总是从只有一半(从中间分开左面的)?

ACMAIN_CHM 2009-10-05
  • 打赏
  • 举报
回复
是否是你的字符集设置的问题? set names gb2312 一下。

mysql> set names 'gb2312';
Query OK, 0 rows affected (0.06 sec)

mysql> delimiter //
mysql> CREATE PROCEDURE `forum_register`(
-> in email varchar(30),
-> in password varchar(16),
-> in userName char(8),
-> in qq char(10),
-> in securityQuestion1 varchar(40),
-> in securityQuestion2 varchar(40),
-> in securityAnswer1 varchar(40),
-> in securityAnswer2 varchar(40),
-> in headPicture blob,
-> in registerTime datetime,
-> in participatedTopicsCount int,
-> in createdTopicsCount int,
-> in managingSectionID smallint,
-> in currentUploadSize float,
-> in state char(1)
-> )
-> begin
-> insert into forum_users(
-> 用户名,
-> 邮箱,
-> 参与主题数,
-> 发起主题数,
-> 密码,
-> QQ,
-> 头像,
-> 注册时间,
-> 密保问题1,
-> 密保答案1,
-> 密保问题2,
-> 密保答案2,
-> 管理版块ID,
-> 当前上传容量,
-> 状态
->
->
-> )
-> values(
-> userName,
-> email ,
-> participatedTopicsCount ,
-> createdTopicsCount,
-> password,
-> qq,
-> headPicture ,
-> registerTime,
-> securityQuestion1,
-> securityAnswer1 ,
-> securityQuestion2 ,
-> securityAnswer2,
-> managingSectionID,
-> currentUploadSize,
-> state
-> );
-> SELECT LAST_INSERT_ID();
-> end
-> //
Query OK, 0 rows affected (0.34 sec)

mysql> delimiter ;
mysql>
阿_布 2009-10-05
  • 打赏
  • 举报
回复

delimiter //
CREATE DEFINER=`root`@`localhost` PROCEDURE `forum_register`(
in email varchar(30),
in password varchar(16),
in userName char(8),
in qq char(10),
in securityQuestion1 varchar(40),
in securityQuestion2 varchar(40),
in securityAnswer1 varchar(40),
in securityAnswer2 varchar(40),
in headPicture blob,
in registerTime datetime,
in participatedTopicsCount int,
in createdTopicsCount int,
in managingSectionID smallint,
in currentUploadSize float,
in state char(1)
)
begin
insert into forum_users(
用户名,
邮箱,
参与主题数,
发起主题数,
密码,
QQ,
头像,
注册时间,
密保问题1,
密保答案1,
密保问题2,
密保答案2,
管理版块ID,
当前上传容量,
状态


) values(
userName,
email ,
participatedTopicsCount ,
createdTopicsCount,
password,
qq,
headPicture ,
registerTime,
securityQuestion1,
securityAnswer1 ,
securityQuestion2 ,
securityAnswer2,
managingSectionID,
currentUploadSize,
state
);
SELECT LAST_INSERT_ID();
end
//

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧