MySQL存储过程中动态SQL是使用字符串拼接SQL语句,示例代码如下:
SET @selectSql = 'SELECT RECID, FCODE, FNAME, FDISCOUNT, FIMAGE, FVIDEO, FTYPE, FSORT, FISHOT FROM tsvbase ';
IF(paintName<>'')THEN
SET @selectSql =CONCAT(@selectSql,' where FNAME like ',"'%",paintName,"%'");
IF(regionCode<>'')THEN
SET @selectSql =CONCAT(@selectSql,' and FADMINMAPNM like', "'%",fGetRegionCode(regionCode),"%'");
END IF;
IF (regionCode<>'')THEN
SET @selectSql =CONCAT(@selectSql,' where FADMINMAPNM like', "'%",fGetRegionCode(regionCode),"%'");
END IF;
END IF;
SET @selectSql =CONCAT(@selectSql,' order by FISHOT,FSORT LIMIT ',CAST(m AS CHAR(10)),',',CAST(currPage AS CHAR(10)));
SELECT @selectSql;
PREPARE stmt FROM @selectSql;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
注意:这里mysql变量前缀带“@”,无需使用DECLARE声明。
执行步骤说明如下:
- 字符串@selectSql赋值;
- 根据条件使用concat拼接字符串;
- 如果需要拼接orderby和分页字符串;
- 使用PREPARE 完成SQL预处理;
- 执行SQL
- 释放资源
在MySQL数据库中,还支持用户根据自己的需要,自定义的环境变量,用户自定义的变量不需要提前声明,直接赋值使用即可,用户自定义的变量仅应用于当前的会话连接。用户自定义的变量是不需要声明或者初始化的,如果没有赋值直接使用自定义的变量名,变量值则为NULL。1)定义变量并赋值方式一,使用SET直接定义变量并赋值。
CREATE DEFINER=`root`@`localhost` PROCEDURE `table_data_count`(IN `tableName` varchar(200),IN `whereStr` varchar(200),IN `startDate` VARCHAR(200),IN `endDate` VARCHAR(200),OUT count_num tinyint)
下面写一个给大家做参考啊 代码如下:create procedure sp_find(pfind varchar(500) BEGIN DECLAR msql varchar(2000); SET @MyQuery=Concat(‘select * from 表 where ‘,pfind); PREPARE msql from @MyQuery; EXECUTE msql; END 注意一点的就是MYSQL中有好多已经定义好的函数可以使用,比如上面的拼接函数Concat(),利用好这些函数会有很多帮助的。
您可能感兴趣的文章:MySQL存储
动态SQL之where
where标签where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。问题:where后没有条件直接接了[and...]显然是不对的
这个查询也会失败。这个问题不能简单地用条件元素来解决。这个问题是如此的难以解决,以至于解决过的人不会再想碰到这种问题。My
// 这个是满足条件需要调用的存储过程 可以看下上篇存储过程迁移数据篇
drop PROCEDURE if EXISTS test_dept;
CREATE PROCEDURE test_dept ()
BEGIN
DECLARE d_id INT ( 11 ) DEFAULT 0;
DECLARE d_name VARCHAR ( 64 ) DEFAULT NULL;
DECLARE d_level VARCHAR ( 64 ) DEFAULT NULL;
DECLARE flag
《Mysql实例MySql带参数存储过程(动态执行SQL语句)》要点:本文介绍了Mysql实例MySql带参数存储过程(动态执行SQL语句),希望对您有用。如果有疑问,可以联系我们。导读:本文分享的这个mysql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有.挪用方式:call GetUsersDynamic(age<=30...MYSQL教程本文分享的这个mysql...
本文主要向大家介绍MySQL数据库之MySQL存储过程中实现执行动态SQL语句的方法了 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。本文实例讲述了MySQL存储过程中实现执行动态SQL语句的方法。分享给大家供大家参考。具体实现方法如下:mysql>mysql>delimiter$$mysql>mysql>CREATEPROCEDUREset...
说明:本文未经作者书面授权,禁止转载、复制等。
MySQL 5.6为服务器端预处理语句提供支持。 此支持利用了高效的客户端/服务器二进制协议。 将带有占位符的预准备语句用于参数值具有以下好处:
每次执行时解析语句的开销更少。 通常,数据库应用程序处理大量几乎相同的语句,只更改子句中的文字或变量值,例如查询和删除的WHERE,SET为更新和插入的VALUES。...