--存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数
create procedure p_procedurecode(in sumdate varchar(10))
begin
declare v_sql varchar(500); --需要执行的SQL语句
declare sym varchar(6);
declare var1 varchar(20);
declare var2 varchar(70);
declare var3 integer;
--定义游标遍历时,作为判断是否遍历完全部记录的标记
declare no_more_departments integer DEFAULT 0;
--定义游标名字为C_RESULT
DECLARE C_RESULT CURSOR FOR
SELECT barcode,barname,barnum FROM tmp_table;
--声明当游标遍历完全部记录后将标志变量置成某个值
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_departments=1;
set sym=substring(sumdate,1,6); --截取字符串,并将其赋值给一个遍历
--连接字符串构成完整SQL语句,动态SQL执行后的结果记录集,在MySQL中无法获取,因此需要转变思路将其放置到一个临时表中(注意代码中的写法)。一般写法如下:
-- 'Create TEMPORARY Table 表名(Select的查询语句);
set v_sql= concat('Create TEMPORARY Table tmp_table(select aa as aacode,bb as aaname,count(cc) as ccnum from h',sym,' where substring(dd,1,8)=''',sumdate,''' group by aa,bb)');
set @v_sql=v_sql; --注意很重要,将连成成的字符串赋值给一个变量(可以之前没有定义,但要以@开头)
prepare stmt from @v_sql; --预处理需要执行的动态SQL,其中stmt是一个变量
EXECUTE stmt; --执行SQL语句
deallocate prepare stmt; --释放掉预处理段
OPEN C_RESULT; --打开之前定义的游标
REPEAT --循环语句的关键词
FETCH C_RESULT INTO VAR1, VAR2, VAR3; --取出每条记录并赋值给相关变量,注意顺序
--执行查询语句,并将获得的值付给一个变量 @oldaacode(注意如果以@开头的变量可以不用通过declare语句事先声明)
select @oldaacode:=vcaaCode from T_sum where vcaaCode=var1 and dtDate=sumdate;
if @oldaacode=var1 then --判断
update T_sum set iNum=var3 where vcaaCode=var1 and dtDate=sumdate;
else
insert into T_sum(vcaaCode,vcaaName,iNum,dtDate) values(var1,var2,var3,sumdate);
end if;
UNTIL no_more_departments END REPEAT; --循环语句结束
CLOSE C_RESULT; --关闭游标
DROP TEMPORARY TABLE tmp_table; --删除临时表
end;
分享到:
相关推荐
### MySQL存储过程基础知识点 #### 1. 存储过程的定义和示例 存储过程是存储在MySQL服务器上的预编译的SQL代码段,它能够接受参数、执行一系列的SQL语句和流程控制语句。存储过程可以提高数据库操作的效率,同时...
### MySQL存储过程实战知识点 #### 一、存储过程概述 MySQL 存储过程是一种预编译的 SQL 脚本,它可以包含复杂的逻辑控制结构、循环等操作,并且可以接受参数,执行完后还可以返回结果。存储过程可以提高数据处理...
下面是 MySQL 存储过程的相关知识点: 存储过程的定义和示例 存储过程是一种预编译的SQL语句集合,可以在MySQL数据库中多次执行。存储过程的定义可以分为两个部分:过程头和过程体。过程头定义了过程的名称、参数...
### 精通MySQL存储过程和函数 #### 1. 说明 ##### 1.1 手册适用范围 本手册适用于对MySQL存储过程...通过这些知识点的学习,可以帮助开发者更好地理解和应用MySQL存储过程和函数,从而提高应用程序的性能和安全性。
最后,"mysql存储过程.pdf"专注于MySQL的存储过程。存储过程是预编译的SQL语句集合,可以提高数据库操作的性能,减少网络流量,并增强数据安全。在PDF文档中,你将学习如何定义、调用和管理存储过程,以及如何使用...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许...本经典教程将深入讲解这些知识点,帮助读者成为存储过程的高手。通过阅读和实践,您将能够创建、调用和管理各种复杂存储过程,应对实际项目中的各种挑战。
在这个“MySQL存储过程参考查阅资料”中,你可以深入学习到关于MySQL存储过程的各种知识点。 1. **存储过程的概念**: 存储过程是一组为了完成特定功能的SQL语句集合,存储在数据库中并可由用户调用执行。它们可以...
根据给定的文件信息,我们将深入探讨如何在PHP中调用MySQL存储过程,这一知识点对于理解数据库自动化任务、提高数据处理效率以及增强代码的可维护性和安全性具有重要意义。 ### MySQL存储过程 存储过程是一种在...
根据提供的文件信息,我们可以深入探讨 MySQL 存储过程的相关知识点,包括存储过程的创建、调用、删除,以及其中常用的一些流程控制语句和函数。 ### 一、MySQL 存储过程简介 #### 1. 创建存储过程 存储过程是一种...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者封装一系列SQL语句并作为一个单元来执行,提高了数据库操作的效率和代码的复用性。在本篇总结文档中,我们将探讨MySQL存储过程的简单应用,包括循环...
总结来说,Kettle批量导出MySQL存储过程涉及到的关键知识点有:Kettle的数据流设计、MySQL的存储过程、数据库元数据获取、循环控制、文件生成和命令行脚本的创建。熟练掌握这些技能,将有助于我们在数据库管理和维护...
根据给定的信息,我们可以深入探讨PHP与MySQL存储过程的相关知识点,包括如何在MySQL中使用`CONCAT`函数、创建存储过程以及如何通过PHP脚本来调用这些存储过程。 ### 使用 CONCAT 函数 #### 标题中的示例 ```sql ...
根据提供的文件信息,我们可以深入探讨MySQL存储过程的相关知识点,包括其基本语法、数据类型与运算符、流程控制以及输入和输出等内容。 ### MySQL存储过程概述 MySQL存储过程是一种预编译的SQL脚本,可以存储在...
根据给定的文件标题、描述、标签以及部分内容,我们可以总结并深入探讨以下关于C#与MySQL存储过程操作的关键知识点: ### 一、C#连接MySQL数据库 在C#中,要实现对MySQL数据库的连接与操作,首先需要引用MySQL....
在本文中,我们将介绍如何使用 Mysql 存储过程快速添加百万数据,并讨论相关的知识点。 知识点一:Mysql 存储过程 Mysql 存储过程是一组按顺序执行的 SQL 语句的集合,可以用来实现复杂的业务逻辑。存储过程可以...
下面将详细解析报告中的每个知识点。 1. 创建存储过程 存储过程是一种在数据库中定义并保存起来的可以被调用的子程序。它可以通过一个指定的名字来执行,可以有输入参数和输出参数。在报告中提到了创建了两个存储...