免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7667 | 回复: 26
打印 上一主题 下一主题

mysql存储过程有诡了!!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-17 12:59 |只看该作者 |倒序浏览
原先的存储过程是这样的
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_AdjustSPKCB`()
begin
     /*整理仓库*/
     update spkcb  set ck_id= ifnull((select cangku.id from cangku  where cangku.ckdm=spkcb.ckdm),-1);
     /*整理商品*/
     update spkcb  set goods_id= ifnull((select goods.goods_id from goods  where goods.goods_sn=spkcb.goods_sn),-1);
     /*整理颜色*/
     update spkcb set color_id =  ifnull((select goods_color.color_id from goods_color,color  where  goods_color.color_id=color.color_id and goods_color.goods_id=spkcb.goods_id and color.color_code=spkcb.color_code),-1);
     /*整理尺码*/
     update spkcb set size_id =  ifnull((select goods_size.size_id from goods_size,size  where  goods_size.size_id=size.size_id and goods_size.goods_id=spkcb.goods_id and size.size_code=spkcb.size_code),-1);
     /*删除无效数据*/
     delete from spkcb where ck_id=-1 or goods_id=-1 or color_id=-1 or size_id=-1;
     
     Select 1 as MID;
end

执行时报错;
[SQL] CREATE DEFINER=`root`@`localhost` PROCEDURE `p_AdjustSPKCB`()
begin
     /*整理仓库*/
     update spkcb  set ck_id= ifnull((select cangku.id from cangku  where cangku.ckdm=spkcb.ckdm),-1);
[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 4


修改后如下:
CREATE  PROCEDURE `p_AdjustSPKCB`()
begin
     /*整理仓库*/
     update spkcb  set ck_id= ifnull((select cangku.id from cangku  where cangku.ckdm=spkcb.ckdm),-1);
     /*整理商品*/
     update spkcb  set goods_id= ifnull((select goods.goods_id from goods  where goods.goods_sn=spkcb.goods_sn),-1);
     /*整理颜色*/
     update spkcb set color_id =  ifnull((select goods_color.color_id from goods_color,color  where  goods_color.color_id=color.color_id and goods_color.goods_id=spkcb.goods_id and color.color_code=spkcb.color_code),-1);
     /*整理尺码*/
     update spkcb set size_id =  ifnull((select goods_size.size_id from goods_size,size  where  goods_size.size_id=size.size_id and goods_size.goods_id=spkcb.goods_id and size.size_code=spkcb.size_code),-1);
     /*删除无效数据*/
     delete from spkcb where ck_id=-1 or goods_id=-1 or color_id=-1 or size_id=-1;
     
     Select 1 as MID;
end

可以正常执行了,,,,,,,

各位大大帮忙看下是个什么情况

论坛徽章:
0
2 [报告]
发表于 2011-11-17 18:35 |只看该作者
`数据库名`.`p_AdjustSPKCB`

论坛徽章:
0
3 [报告]
发表于 2011-11-17 22:17 |只看该作者
回复 2# cai120120-pb


    我是用navicat打开了一个数据库然后在里执行的,应该不要指定数据库名了吧?
还有,我按你的方法试了后还是一样的报错的喔

论坛徽章:
0
4 [报告]
发表于 2011-11-18 13:02 |只看该作者
回复 1# xiaozhenggang


    你的更改就只是去掉了DEFINER=`root`@`localhost` 吗?? show create procedure p_AdjustSPKCB;的结果贴出来看看!

论坛徽章:
0
5 [报告]
发表于 2011-11-18 15:20 |只看该作者
回复 4# 飞鸿无痕


    这个存储过程数据库里面本来有的,我用navicat连上数据库后不能修改这个存储过程,把创建语句剪出来执行也报错。但是把DEFINER=XXXXXXX那一段去掉就能执行。
下面是show procedure的截图:

论坛徽章:
0
6 [报告]
发表于 2011-11-18 17:21 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2011-11-18 17:21 |只看该作者
回复 5# xiaozhenggang


    这个问题挺诡异,在mysql命令行下能执行吗?不通过你说的那个客户端,我用的sqlyog还没遇到那个问题!

论坛徽章:
0
8 [报告]
发表于 2011-11-18 17:26 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2011-11-18 17:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2011-11-18 21:30 |只看该作者
回复 6# kerlion


    是root登录的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP