`

mysql 动态执行存储过程3

 
阅读更多

DROP PROCEDURE IF EXISTS f_qr_album;

DELIMITER $$

CREATE PROCEDURE f_qr_album
(
	IN	_id				INTEGER(10),
	IN	_albumid		VARCHAR(10),
	IN	_albumname		VARCHAR(10),
	IN	_artistname		VARCHAR(10),
	IN	_releasedate	VARCHAR(10),
	IN	_publisher		VARCHAR(10),
	IN	_albumdesc		VARCHAR(10),
	
	IN	_recordstart	INTEGER(10),
	IN	_recordend		INTEGER(10),
	IN	_querytype		INTEGER(10),
	OUT	_recordnum		INTEGER(10),
	OUT	_recordsum		INTEGER(10),
	OUT	_ret			INTEGER(10)
)
BEGIN
	DECLARE _sql VARCHAR(500);
	DECLARE CONTINUE HANDLER FOR NOT FOUND set _ret = -1;
	set @sql = ' from t_album where 1 = 1 ';
	set @count = 0;
	set _ret = 0;
	
	-- 1 查询总数 2 查询结果集
	-- IF ISNULL(_albumid) THEN
	IF _albumid IS NOT NULL THEN
		SET @sql = CONCAT(@sql, ' and albumid = ', _albumid);
	ELSE
		IF _albumname IS NOT NULL THEN
			SET @sql = CONCAT(@sql, ' and albumname like ', _albumname);
		END IF;
		IF _releasedate IS NOT NULL THEN
			SET @sql = CONCAT(@sql, ' and releasedate like ', DATE(_releasedate));
		END IF;
		IF _publisher IS NOT NULL THEN
			SET @sql = CONCAT(@sql, ' and publisher like ', _publisher);
		END IF;
		IF _albumdesc IS NOT NULL THEN
			SET @sql = CONCAT(@sql, ' and albumdesc like ', _albumdesc);
		END IF;
		
	END IF;
	
	IF _querytype = 1 THEN
		SET @sql = CONCAT(' select count(1) into @count ', @sql);
	ELSE
		SET @sql = CONCAT(' select id,
			albumid,
			albumname,
			artistname,
			albumcover,
			totaltracks,
			releasedate,
			publisher,
			albumdesc ', @sql);
	END IF;
	
	PREPARE _sql from @sql;
	EXECUTE _sql;
	DEALLOCATE PREPARE _sql;
	SET _recordsum = @count;

END
$$

DELIMITER ;

分享到:
评论

相关推荐

    mysql存储过程教程

    存储过程是由一个或多个SQL语句组成的集合,存储在数据库中,可以像函数一样被调用执行。它们可以接受参数,返回结果,并且能够处理复杂逻辑,如条件判断和循环结构。在大型项目中,存储过程有助于减少网络传输,...

    android通过jdbc方式连接mysql,并执行存储过程

    android通过jdbc方式连接mysql,并执行存储过程。连接数据库部分最好新建一个线程来实现和主线程分开。编译之前确定添加了mysql-connector-java-5.0.8-bin库否则会出错

    MySQL存储过程的异常处理方法

    在MySQL中,存储过程是一种预编译的SQL代码集合,它可以执行复杂的操作并提供更好的性能。在编写存储过程时,异常处理是确保程序稳定性和健壮性的重要环节。本实例展示了如何在MySQL存储过程中实现异常处理,以捕获...

    Java实现调用MySQL存储过程详解

    3. **调用存储过程**:使用`CallableStatement`对象来执行存储过程。对于带参数的存储过程,需要设置参数并执行`executeProcedure()`。 ```java String procedureName = "{call findAllBook(?) }"; // 例如,调用...

    mysql经典教程+mysql存储过程讲解

    存储过程是MySQL中的一个重要概念,它是一组预编译的SQL语句,可以在需要时执行。存储过程的好处包括提高性能、减少网络流量、增强安全性、简化复杂的操作和提供模块化的代码。在“MySQL5.0存储过程.pdf”中,你将学...

    MySQL存储过程学习

    存储过程是一组为了完成特定功能的SQL语句集合,这些语句被存储在数据库中,可以由用户或者应用程序按需调用执行。相比于单条SQL语句,存储过程有以下优点:提高性能(因为编译只需要一次)、减少网络流量(因为只需...

    MySql 分页存储过程以及代码调用

    本篇文章将深入探讨MySQL中的分页存储过程及其代码调用方法。 首先,理解分页的基本概念。在网页或应用程序中,我们通常会看到“上一页”、“下一页”这样的导航,这就是分页的表现形式。分页查询通过设置每页显示...

    mysql触发器+存储过程

    MySQL数据库系统提供了强大的数据库管理功能,其中两个关键的特性是触发器(Triggers)和存储过程(Stored Procedures)。这两者都是数据库编程的重要组成部分,能够帮助用户实现更复杂的数据操作和业务逻辑。 首先...

    mysql存储过程——用于数据库的备份与还原

    为了使用这个存储过程,你需要将其导入到你的MySQL服务器中,然后通过`CALL`语句来执行。 总的来说,通过存储过程进行数据库备份与还原是一种高效且灵活的方式,尤其是在大型数据库环境中,可以显著提高工作效率,...

    MySQL实现创建存储过程并循环添加记录的方法

    这将执行存储过程`myproc`中的所有操作,即在`t_calendar_hour`表中插入24条记录。 在实际应用中,存储过程的优势在于提高了代码的重用性和可维护性,减少了网络传输的数据量,并且可以通过事务处理来保证数据的...

    MySQL数据库存储过程

    用户可以使用MySQL客户端工具(如MySQL Workbench、phpMyAdmin等)导入该文件,执行其中的SQL命令来实践存储过程的操作。 同时,`mysql存储过程教程.pdf`很可能是一个详细的指南,涵盖了存储过程的基础概念、语法、...

    存储过程文档--mysql

    1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2. 当对数据库进行复杂操作时(如对多个表进行 Update、...

    mysql5.0官方存储过程翻译

    MySQL存储过程是数据库管理系统中的一个重要组成部分,特别是在MySQL 5.0版本中,它提供了一种组织和执行复杂SQL语句的高效方式。本资料集合包含了对MySQL 5.0官方存储过程的详细翻译,旨在帮助学习者深入理解并熟练...

    mysql 流水号 存储过程 附表结构

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者编写包含一系列SQL语句的程序,以便在需要时执行。在“mysql 流水号 存储过程 附表结构”这个主题中,我们主要探讨如何在MySQL中创建一个存储过程来...

    MySQL存储过程编程.pdf

    3. 调试存储过程:调试存储过程以确保其正确执行。 4. 部署存储过程:将存储过程部署到生产环境中。 MySQL 存储过程编程的最佳实践: * 使用参数IsValid来确保参数的正确性。 * 使用TRY-CATCH语句来处理异常。 * ...

    mysql存储过程调试工具

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者编写一系列复杂的SQL语句,并作为一个单元进行执行,提高代码复用性和效率。然而,与普通的编程语言一样,存储过程的调试同样至关重要,因为错误的存储...

    一个MySQL的简单存储过程

    ### MySQL中的简单存储过程知识点详解 #### 一、存储过程简介 存储过程是SQL语句与可选控制流语句的预编译集合,存储在数据库中,通过一个名称来调用它。存储过程可以接收输入参数并返回输出参数。在MySQL中,使用...

    mysql存储过程动态创建多列

    在MySQL中,存储过程是一种预编译的SQL代码集合,它可以接受输入参数,执行一系列复杂的数据库操作,并返回结果。本文将深入探讨如何利用MySQL存储过程动态创建多列,这是一个高级功能,尤其适用于需要根据运行时...

    MySQL存储过程完整版使用代码示例

    资源包中囊括了MySQL数据库中的存储过程的使用包含的基本结构及日常所使用到的基本函数的使用【包括java端调用存储过程,创建临时表,动态执行sql语句,过程的递归调用,指针循环取数,批量创建表删除表,树状结构的...

Global site tag (gtag.js) - Google Analytics