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例子的更多相关文章

  1. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

  2. mysql 存储过程动态拼接sql并执行赋值

    )) BEGIN ## 定义变量 ,) ; ## @表示全局变量 相当于php $ ## 拼接赋值 INTO 必须要用全局变量不然语句会报错 SET @strsql = CONCAT('SELECT ...

  3. mysql创建存储过程动态SQL语句

    DROP PROCEDURE IF EXISTS x.`wk`; DELIMITER $$ CREATE PROCEDURE `x`.`wk`() BEGIN ); ); SET t = CONCAT ...

  4. Mysql - 游标/动态sql/事务

    游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...

  5. oracle 存储过程 动态sql语句

    一.在oracle项目开发中越到问题: 在利用ODP向oracle中插入数据时,如果这样写:   insert into clobTable (id, story) values(1,'....'); ...

  6. MySQL基础----动态SQL语句

    尊重原创:http://blog.csdn.net/abc19900828/article/details/39501643   动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: ...

  7. SQL Server创建存储过程——动态SQL

    简介: 存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行. 自定义存储过程,由用户创建并能完成 ...

  8. db2存储过程动态sql被截断

    编写存储过程,使用动态sql时,调试时发现变量赋值后被截断. 关键代码如下: 实现的效果是先把上下游做对比的sql语句和相关参数存入RKDM_DATA_VOID_RULE, 执行存储过程后把两个sql ...

  9. mysql 存储过程动态执行sql语句

    之前经常在程序中拼接sql语句,其实我们也可以在存储过程中拼接sql 语句,动态的执行~~ 代码如下: DROP PROCEDURE IF EXISTS SearchByDoctor;CREATE P ...

随机推荐

  1. DNA Sorting--hdu1379

    DNA Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. UVA 12563 Jin Ge Jin Qu hao

    dp-背包 开始用普通dp写了一发发现没法确定最大时间... 后来看到大牛机智的写法,嗯...dp表示当前状态能否成立:然后从条件最好的状态开始遍历,直到这个状态成立然后退出遍历. 具体的看代码吧.. ...

  3. 在Azure Cloud Service中部署Java Web App(2)

    接上文. 9.在进行发布之前,需要对我们的订阅做一些设置,因为默认情况下,Azure的service end指向的是Azure global的站点,如果我们要将服务发布在Azure的中国站点,需要做下 ...

  4. C语言的本质(28)——C语言与汇编之用汇编写一个Helloword

    为了更加深入理解C语言的本质,我们需要学习一些汇编相关的知识.作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但是非常重要.因为它能够完成许多其它语言所无法完成的功能.就拿 Linux 内核 ...

  5. (转载博文)MFC 窗口句柄获取

    句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息.处理程序):0.获取所在类窗口的句柄: this->m_hwnd 1.主窗口的句柄: 无论在主窗口类内,还是子窗口类内,获取主窗口句柄 ...

  6. Valentino发布2013秋冬高级定制系列_菁华时尚生活,时尚生活电子杂志,Fine Born China

    Valentino发布2013秋冬高级定制系列_菁华时尚生活,时尚生活电子杂志,Fine Born China alentino发布2013秋冬高级定制系列 编辑: Mavis 图源于网络 图源于网络 ...

  7. 下载类网站的SEO优化方面技巧

    在互联网国际中有一类十分主要的网站,那即是供应各种软件下载的网站,这类网站可以协助用户解决许多软件运用方面的疑问,可是随着知识产权维护的认识越来越强,许多下载类网站也要开端改动自个的经营策略,这么才可 ...

  8. OC基础8:分类和协议

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于分类(category): (1) ...

  9. Android学习总结——Activity状态保存和恢复

    Android中启动一个Activity如果点击Home键该Activity是不会被销毁的,但是当进行某些操作时某些数据就会丢失,如下: Java class: package com.king.ac ...

  10. Python OpenGL学习(1): 环境配置及错误篇

    系统环境是:Ubuntu 14.04 个人首次接触OpenGL,学到哪就写到哪. 1.模块安装: sudo apt-get install python-openglpip install PyOpe ...