建表语句:
CREATE TABLE `t_user_log` (
`userID` int(11) unsigned DEFAULT NULL,
`userName` varchar(40) DEFAULT NULL,
`oprDate` datetime DEFAULT NULL,
`oprContent` varchar(80) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (year(oprDate))
(PARTITION part0 VALUES LESS THAN (201310) ENGINE = MyISAM,
PARTITION part1 VALUES LESS THAN (201311) ENGINE = MyISAM,
PARTITION part2 VALUES LESS THAN (201312) ENGINE = MyISAM,
PARTITION part3 VALUES LESS THAN (201401) ENGINE = MyISAM,
PARTITION part4 VALUES LESS THAN (201402) ENGINE = MyISAM,
PARTITION part5 VALUES LESS THAN (201403) ENGINE = MyISAM)
存储过程语句:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_batchAddUser`(in userName varchar(4000), in oprDate varchar(4000),in oprContent varchar(4000))
BEGIN
-- 定义变量
declare tmp_userName varchar(4000);
declare tmp_oprDate varchar(4000);
declare tmp_oprContent varchar(4000);
declare v_userName varchar(20);
declare v_oprDate varchar(20);
declare d_oprDate datetime;
declare v_oprContent varchar(20);
declare i_userName_num int;
declare i_oprDate_num int;
declare i_oprContent_num int;
declare v_sql varchar(6000);
set v_sql = 'insert into t_user_log(userID, userName, oprDate, oprContent) values(';
set tmp_userName = userName;
set tmp_oprDate = oprDate;
set tmp_oprContent = oprContent;
set i_userName_num = instr(tmp_userName, '|');
set i_oprDate_num = instr(tmp_oprDate, '|');
set i_oprContent_num = instr(tmp_oprContent, '|');
-- select concat(SUBSTRING(tmp_userName, 1, 5), ' ', SUBSTRING(tmp_userName, 7));
while (i_userName_num > 0 and tmp_userName is not null) do
set v_userName = substring(tmp_userName, 1, i_userName_num - 1);
set v_oprDate = subString(tmp_oprDate, 1, i_oprDate_num - 1);
set v_oprContent = subString(tmp_oprContent, 1, i_oprContent_num - 1);
set d_oprDate = str_to_date(v_oprDate, '%Y-%m-%d %H:%i:%s');
set tmp_userName = substring(tmp_userName, i_userName_num + 1);
set tmp_oprDate = substring(tmp_oprDate, i_oprDate_num + 1);
set tmp_oprContent = substring(tmp_oprContent, i_oprContent_num + 1);
set i_userName_num = instr(tmp_userName, '|');
set i_oprDate_num = instr(tmp_oprDate, '|');
set i_oprContent_num = instr(tmp_oprContent, '|');
select concat(v_userName, ' ', d_oprDate, ' ', v_oprContent);
SET v_sql = CONCAT(v_sql, i_userName_num, ',', '\"',v_userName,'\"', ',', '\"',d_oprDate, '\"', ',', '\"',v_oprContent,'\"', '),(');
end while;
select concat(tmp_userName, ' ', tmp_oprDate, ' ', tmp_oprContent);
SET v_sql = CONCAT(v_sql, i_userName_num, ',', '\"', tmp_userName,'\"', ',', '\"',tmp_oprDate,'\"', ',', '\"',tmp_oprContent,'\"', ');');
select concat(v_sql);
-- 执行动态语句
set @v_sql = v_sql;
prepare stmt1 from @v_sql;
execute stmt1;
deallocate prepare stmt1;
END
分享到:
相关推荐
MySQL存储过程是数据库中用于执行一组特定操作的预编译的SQL语句集合。它们允许开发人员封装复杂的逻辑,提高代码复用性和数据库操作效率。...理解并掌握动态SQL和返回值的处理是提升MySQL存储过程编程能力的关键步骤。
以下将详细解释如何在MySQL存储过程中执行动态SQL语句。 首先,我们来看一个简单的例子: ```sql DROP PROCEDURE IF EXISTS my_procedure; CREATE PROCEDURE my_procedure() BEGIN DECLARE my_sql VARCHAR(500); ...
以下是一个实例,展示了如何在MySQL存储过程中实现执行动态SQL语句的方法: 首先,我们创建一个名为`set_col_value`的存储过程,它接受四个输入参数: 1. `in_table`:表示要更新的表名。 2. `in_column`:表示要...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...
MySQL 存储过程是一种存储在 MySQL 服务器中的 SQL 代码段,它能够被多个客户端多次调用。存储过程的主要优势在于能够简化复杂的 SQL 查询,执行常见的任务,以及实现数据逻辑。通过使用存储过程,开发者可以在一次...
mysql通用存储过程sql脚本,支持多表,子查询,高级查询 分页
本实例展示了如何在MySQL存储过程中实现异常处理,以捕获并处理可能出现的错误。 首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个...
内容概述:通过MySQL存储过程实战的例子,学会使用MySQL存储过程。包含以下内容: 创建无参存储过程、有参存储过程、IF-ELSE存储过程、WHILE循环存储过程、CASE-WHEN条件控制存储过程、REPEAT UNTIL循环存储过程、...
总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。
本文将深入探讨如何利用MySQL存储过程动态创建多列,这是一个高级功能,尤其适用于需要根据运行时变量或条件动态修改表结构的情况。 ### MySQL存储过程动态创建多列 #### 基本概念 在MySQL中,动态地添加列到一个...
mysql和sqlserver都是数据库,但是两者之间有一些区别,那么它们在存储过程的开发上又有哪些区别呢?
本教程结合"mysql经典教程+mysql存储过程讲解"的主题,将深入探讨MySQL的基础知识以及核心特性——存储过程。 首先,我们需要理解什么是数据库。数据库是一个组织和存储数据的系统,允许用户以结构化方式访问和管理...
MySQL 存储过程编程 MySQL 存储过程编程是指在 MySQL 数据库中使用存储过程来实现业务逻辑的编程技术。存储过程是一种可以在数据库中存储和执行的程序单元,它可以实现复杂的业务逻辑和数据处理操作。 在 MySQL ...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...
总的来说,这些存储过程的核心是通过动态生成SQL语句来处理无限级分类的增删改查操作,它们利用了SQL Server 2005的特性和功能,如递归查询、事务管理等,确保了在复杂的数据结构中的数据完整性和一致性。...
本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...
MySQL存储过程是数据库管理系统中的一个重要特性,它允许程序员或数据库管理员预先定义一组SQL语句,形成一个可重用的逻辑单元。在这个“MySQL存储过程入门到精通”资料中,你将深入理解存储过程的原理、创建、调用...
0、完全支持Mysql、SqlServer、SysBase等数据库自动生成存储过程 1、 基本完全代替编写存储过程的工作任务。 2、 让不会写存储过程的测试人员,也可顺利完成加压测试工作。 3、 让会写存储过程的测试人员,短时间内...
MySQL是一个广泛使用的开源关系型数据库管理系统,以其高效、...本资料包中的"www.pudn.com.txt"可能包含了更多关于MySQL存储过程的详细信息和示例,而"MySql"可能是一个包含示例数据库的文件,供学习者实践和探索。