存储过程定义语法

简介:

CREATE  PROCEDURE `addTicket`(in vipsql VARCHAR(255),in ordersql VARCHAR(255),in detailkey varchar(255),in detailsql VARCHAR(255)) comment '挂单(售药窗口)'

BEGIN

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION ,NOT FOUND

rollback;

start transaction;

set @vid=@oid='';

set @outstr='';

set @errcode=200;

set @errmsg='成功';

if vipsql=0 then

set @tem=vipsql;

prepare tem from @tem;

execute tem;

set @rows=row_count();

if @rows<=0 then

set @errcode=501;

set @errmsg='插入到【会员表】失败';

rollback;

end if;

set @vid=LAST_INSERT_ID();

else

set @vid=vipsql;

end if;

select order_outpatient_num into @cnum from `order` order by order_outpatient_num desc limit 1;

if locate(curdate()+0,@cnum)=0||@cnum='' then

set @cnum=concat(curdate()+0,'00000001');

else

set @cnum=@cnum+1;

end if;

set ordersql=concat(ordersql,"'",@vid,"','",@cnum,"')");

set @ordersql=ordersql;

prepare temp from @ordersql;

execute temp;

set @rows=row_count();

if @rows<=0 then

set @errcode=502;

set @errmsg='插入到【订单表】失败';

rollback;

end if;

set @oid=LAST_INSERT_ID();

set @num=(length(detailsql)-length(replace(detailsql,'*#*','')))/3+1;

set @i=1;

while @i<=@num do

if @i=1 then

set @strsql=substring_index(detailsql,'*#*',@i);

else

set @strsql=substring_index(detailsql,'*#*',@i);

set @strsql=substring_index(@strsql,'*#*',-1);

end if;

set @outstr=concat(@outstr,@strsql,"'",@cnum,"','",@oid,"'),");

set @i=@i+1;

end while;

set @outstr=concat(detailkey,@outstr);

set @outstr=left(@outstr,char_length(@outstr)-1);

prepare temp0 from @outstr;

execute temp0;

set @rows=row_count();

if @rows<=0 then

set @errcode=503;

set @errmsg='插入到【订单详情表】失败';

rollback;

end if;

commit;

select @errcode as errcode,@errmsg as errmsg;

END


本文转自 Lee_吉  博客,原文链接:  http://blog.51cto.com/12173069/1960356      如需转载请自行联系原作者


相关文章
|
4月前
|
存储 SQL 定位技术
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
|
存储
存储过程的语法讲解
在上一篇文章:别再说不知道什么是存储过程和存储函数了中简单的介绍了存储过程和存储函数以及其使用。其实存储过程是可以进行编程的,所以可以和其他的编程语言一样使用变量、表达式以及控制结构进行编程,从而实现一些复杂和有用的功能。
179 0
存储过程的语法讲解
|
存储 Oracle 关系型数据库
Oracle存储过程迁移ODPS-03(专有云):ODPS1.0支持exists语法
专有云目前还有不少ODPS1.0版本,主要是应对V3之前的平台版本。这个版本的ODPS不支持exists语法,如何换种写法实现。
2971 0
|
SQL 存储 关系型数据库
|
SQL 存储 缓存
SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除(drop table #tableName)吗?
原文:SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除(drop table #tableName)吗?   本文出处:http://www.cnblogs.com/wy123/p/6704619.
1520 0
|
存储 SQL 关系型数据库
存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 --------------------基本语法-------------------- 一.
825 0