mysql 存储过程 动态sql例子
proc:BEGIN
DECLARE _count INT DEFAULt 0;
DECLARE _eventID INT DEFAULT 0;
DECLARE _status INT DEFAULT 0;
DECLARE _startTime VARCHAR(19) DEFAULT '';
DECLARE _endTime VARCHAR(19) DEFAULT '';
DECLARE _tblAccessLog VARCHAR(30) DEFAULT '';#插入日志的表,一个活动一张表 #将局部变量转换成会话变量
#动态sql语言只接受会话变量
SET @iFieldID=iFieldID;
SET @sUID=sUID;
SET @sIP=sIP;
SET @sCreateTime=sCreateTime; #判断字段状态
SELECT event_id,`status` INTO _eventID,_status
FROM portal_tongji_event_field
WHERE id=iFieldID; IF _eventID=0 THEN
SELECT -10001 AS retCode,'该字段不存在' AS retMsg;
LEAVE proc;
END IF;
IF _status=2 THEN
SELECT -10002 AS retCode,'该字段已禁用' AS retMsg;
LEAVE proc;
END IF; #判断活动状态
SELECT COUNT(*),`status`,start_time,end_time INTO _count,_status,_startTime,_endTime
FROM portal_tongji_event_info
WHERE id=_eventID; IF _count=0 THEN
SELECT -10003 AS retCode,'该活动不存在' AS retMsg;
LEAVE proc;
END IF;
IF _status=2 THEN
SELECT -10004 AS retCode,'该活动已禁用' AS retMsg;
LEAVE proc;
END IF;
IF _startTime>CURDATE() THEN
SELECT -10005 AS retCode,'活动未开始' AS retMsg;
LEAVE proc;
END IF;
IF _endTime<CURDATE() THEN
SELECT -10006 AS retCode,'活动已结束' AS retMsg;
LEAVE proc;
END IF; #判断日志表是否存在
SET _tblAccessLog=CONCAT('portal_tongji_access_log_',_eventID); SELECT COUNT(*) INTO _count
FROM information_schema.TABLES
WHERE table_name =_tblAccessLog; IF _count=0 THEN
SET @strSql=CONCAT('CREATE TABLE ',_tblAccessLog,' (`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,`field_id` smallint(5) unsigned NOT NULL COMMENT \'统计字段ID\',`uid` varchar(24) NOT NULL COMMENT \'用户账号\',`ip` varchar(15) NOT NULL COMMENT \'用户IP\',`create_time` datetime NOT NULL COMMENT \'创建时间\',PRIMARY KEY (`id`),KEY `field_id` (`field_id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=gbk;');
PREPARE stmt FROM @strSql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF; #插入日志
SET @strSql=CONCAT('INSERT ',_tblAccessLog,' VALUES(NULL,?,?,?,?);');
PREPARE stmt FROM @strSql;
EXECUTE stmt USING @iFieldID,@sUID,@sIP,@sCreateTime;
DEALLOCATE PREPARE stmt; IF last_insert_id()>0 THEN
SELECT 10000 AS retCode,'操作成功' AS retMsg;
ELSE
SELECT -10005 AS retCode,'插入失败' AS retMsg;
END IF;
END
#输入参数: IN iFieldID tinyint(3),IN sUID varchar(24),IN sIP varchar(15),IN sCreateTime varchar(19)
mysql 存储过程 动态sql例子的更多相关文章
- MySQL存储过程动态SQL语句的生成
用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...
- mysql 存储过程动态拼接sql并执行赋值
)) BEGIN ## 定义变量 ,) ; ## @表示全局变量 相当于php $ ## 拼接赋值 INTO 必须要用全局变量不然语句会报错 SET @strsql = CONCAT('SELECT ...
- mysql创建存储过程动态SQL语句
DROP PROCEDURE IF EXISTS x.`wk`; DELIMITER $$ CREATE PROCEDURE `x`.`wk`() BEGIN ); ); SET t = CONCAT ...
- Mysql - 游标/动态sql/事务
游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...
- oracle 存储过程 动态sql语句
一.在oracle项目开发中越到问题: 在利用ODP向oracle中插入数据时,如果这样写: insert into clobTable (id, story) values(1,'....'); ...
- MySQL基础----动态SQL语句
尊重原创:http://blog.csdn.net/abc19900828/article/details/39501643 动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: ...
- SQL Server创建存储过程——动态SQL
简介: 存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行. 自定义存储过程,由用户创建并能完成 ...
- db2存储过程动态sql被截断
编写存储过程,使用动态sql时,调试时发现变量赋值后被截断. 关键代码如下: 实现的效果是先把上下游做对比的sql语句和相关参数存入RKDM_DATA_VOID_RULE, 执行存储过程后把两个sql ...
- mysql 存储过程动态执行sql语句
之前经常在程序中拼接sql语句,其实我们也可以在存储过程中拼接sql 语句,动态的执行~~ 代码如下: DROP PROCEDURE IF EXISTS SearchByDoctor;CREATE P ...
随机推荐
- DEP受保护的问题(尤其是Outlook)
We see this issue quite regularly as we use MAPI and lots of our users run our application on TS. Of ...
- Matlab与.NET混编解决人脸识别问题
原文 http://www.cnblogs.com/asxinyu/archive/2013/05/29/3107013.html 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的 ...
- Hadoop 7、MapReduce执行环境配置
MR执行环境有两种:本地测试环境,服务器环境 本地测试环境(windows,用于测试) 1.下载Winddows版的Hadoop程序,解压后在Hadoop目录的bin目录放置一个winutils.ex ...
- 深信服笔试题(网络project师售后)
总共同拥有3到大题, 1选择 主要有ip地址计算.http协议.vrrp协议. 2.主要是linux填空题 a.linux显示全部系统载入模块____ b.写出linux的两个开机启动程序___.__ ...
- 实现了在android实现左右滑动切换界面的效果
这是实现了在android实现左右滑动切换界面的效果,该效果的源码下载,请到源码天堂下载吧,喜欢的朋友可以研究一下. 布局文件 <?xml version="1.0" enc ...
- windows+Ubuntu双系统 windows引导修复
我的博客:http://blog.csdn.net/muyang_ren 装完windows+Ubuntu麒麟双系统后,发现引导是Ubuntu的. Ubuntu的引导是GRUP windows的引导是 ...
- NVelocity模板引擎学习笔记
NVelocity模板引擎学习笔记 学习模板引擎有一段时间现在做一些总结
- Hadoop 安装(3) JDK 的安装
使用vsftp上传,JDK 和 Hadoop 到 Hadoop 用户目录. 安装JDK root 身份登录Slave4.Hadoop,在 /usr 下创建 "Java"文件夹,将j ...
- SQL递归查询(with cte as) 物料分解
需求 最近在做一个MRP的项目,需要根据生产下达的计划从原始无聊表中分解出成品所需要的原材料和数量. 参考 http://www.cnblogs.com/xqhppt/archive/2011/02/ ...
- js callback函数
A callback is a function that is passed as an argument to another function and is executed after its ...