下述引用自《MySQL 必知必会》

MySQL命令行客户机的分隔符 如果你使用的是MySQL命令行实用程序,应该仔细阅读此说明。默认的MySQL语句分隔符为;(正如你已经在迄今为止所使用的MySQL语句中所看到的那样)。MySQL命令行实用程序也使用;作为语句分隔符。如果命令行实用程序要解释存储过程自身内的;字符,则它们最终不会成为存储过程的成分,这会使
存储过程中的SQL出现句法错误。
解决办法是临时更改命令行实用程序的语句分隔符,如下所示:

 DELIMITER $$
DROP procedure IF EXISTS PROC_GetGoodsDiscontForShop $$
CREATE procedure PROC_GetGoodsDiscontForShop(IN regiondId varchar(50))
BEGIN
SELECT b.shopname,a.goodsname,a.price,a.memberprice,round((a.memberprice/a.price),2) as GoodsDiscount
from shopinfo as b
LEFT JOIN goodsinfo as a on b.id=a.shopid
WHERE a.isdel=0 AND a.salestate=1 AND b.regionId IN ((
SELECT ID from region where ID=regiondId
UNION ALL
SELECT ID from region where SUPERIOR=regiondId
UNION ALL
SELECT ID from region where SUPERIOR IN (
SELECT ID from region where SUPERIOR=regiondId
)
UNION ALL
SELECT ID from region where SUPERIOR IN(
SELECT ID from region where SUPERIOR IN (
SELECT ID from region where SUPERIOR=regiondId
)))); END$$
DELIMITER;

其中,DELIMITER $$告诉命令行实用程序使用$$作为新的语句结束分隔符,可以看到标志存储过程结束的END定义为END$$而不是END;。这样,存储过程体内的;仍然保持不动,并且正确地传递给数据库引擎。最后,为恢复为原来的语句分隔符,可使用DELIMITER ;。除\符号外,任何字符都可以用作语句分隔符。

如何在MySQL客户端Navicat 上创建存储过程返回结果集的更多相关文章

  1. PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)

    (转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...

  2. oracle 存储过程返回结果集 (转载)

    好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过 ...

  3. PostgreSQL 调用存储过程返回结果集

    创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...

  4. oracle 存储过程返回结果集

    好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过 ...

  5. oracle 存储过程 返回结果集

      oracle 存储过程 返回结果集 CreationTime--2018年8月14日09点50分 Author:Marydon 1.情景展示 oracle存储过程如何返回结果集 2.解决方案 最简 ...

  6. 教你如何在Android 6.0上创建系统悬浮窗

    郭霖大神的文章:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235949&idx=1&sn=0f7eded ...

  7. 如何在Linux的桌面上创建快捷方式或启动器

    如果在Linux桌面系统中你经常使用一个程序,你可能想去创建一个“桌面快捷方式”,以便于你在桌面只要点击一下快捷方式就可以启动它.虽然不少带有图形界面的程序会在安装时自动在桌面上创建快捷方式,还有一些 ...

  8. sqlserver创建存储过程返回table

    --创建存储过程test create procedure [dbo].[test] ( @I_MTR NVARCHAR (MAX), @I_TYPE NVARCHAR (MAX), @I_FAC N ...

  9. oracle存储过程返回结果集

    http://www.2cto.com/database/201204/127180.html oracle实现存储过程返回查询结果集合的方法   --实现存储过程返回查询结果集合的方法 ,以下代码来 ...

随机推荐

  1. IntelliJ IDEA 控制台中文乱码

    1. 预热 刚刚接触IntelliJ IDEA几天,在易用性方面的确比Eclipse好很多,比较智能,各种插件.工具都已经集成,和Mac OS X类似——开箱即用. 但是还是老大难问题——中文乱码,让 ...

  2. vue - check-version

    描述:check-versions.js,vue-cli中检查版本的js文件 使用:

  3. C语言中函数调用过程(如何管理栈空间)

    ps:先做草稿,以后有时间再整理并贴图,:) 主要是利用栈底寄存器(ebp).栈顶寄存器(esp)跟eax寄存器(存储返回值)来实现. 假设P调用Q: P() { Q(1,2); } (跟实际情况可能 ...

  4. (三)Oracle学习笔记—— sql语句

    0. scott 用户默认表介绍 scott用户Tables目录下包含四张表 1. insert(插入)语句 给指定列插入数据: ,'xx'); 插入全部列数据: ,'xx','lll'); 2. u ...

  5. c++ vector容器的使用,序列倒叙reverse(),容器底部插入一个数值push_back()

    问题:程序实现将que[i]添加到que2最后,再将que2反转输出. 例如: 输入 4 1 2 3 4 输出 4 2 1 3 #include<iostream> #include< ...

  6. 关于升级 phpStudy 中 MySQL 版本至 5.7.17

    mysql版本低于5.6 自动更新时间会报错.因此要升级mysql版本.综合网上资料和实际过程中遇到的问题,具体细节和注意事项如下: 1.从官网上下载高版本的 MySQL :https://dev.m ...

  7. 在Windows Python3.5 安装LightGBM

    LightGBM是微软旗下DMTK推出的Gradient Boosting框架,因为其快速高效,以后或许会成为数据挖掘竞赛中的又一个大杀器.地址:https://github.com/Microsof ...

  8. javascript 中对象的拷贝

    http://blog.csdn.net/i10630226/article/details/52431562 在javascript中,对象都是值引用,也就是说,如果你常规的使用 "=&q ...

  9. Java 8里 Stream和parallelStream的区别

    Java中Stream和parallelStream,前者是单管,后者是多管,运行时间上做一个小对比,直接上代码: /** * * @author zhangy6 * <p>对比Strea ...

  10. Atitit.一些公司的开源项目 重大知名开源项目attilax总结

    Atitit.一些公司的开源项目 重大知名开源项目attilax总结 1. Twitter--Bootstrap:1 2. Google2 2.1. Gson2 2.2. Angular.Js2 2. ...