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. multiprocessing跨平台锁的使用(Windows问题)

    在Windows上可能遇到,开启的子进程不会关闭的问题 参考multiprocessing官方文档: Explicitly pass resources to child processes On U ...

  2. 关于KeyEvent.Callback

    keycode------------>KEYCODE_BACK,KEYCODE_MENU event.getAction------->ACTION_DOWN,ACTION_UP,ACT ...

  3. JVM调优的几种策略(转)

    JVM参数调优是一个很头痛的问题,可能和应用有关系,别人说可以的对自己不一定管用.下面是本人一些JVM调优的实践经验,希望对读者能有帮助,环境LinuxAS4,resin2.1.17,JDK6.0,2 ...

  4. POJ 2892 Tunnel Warfare (SBT + stack)

    题意:给定了初始的状态:有n个村庄连成一条直线,现在有三种操作: 1.摧毁一个村庄 2.询问某个村庄,输出与该村庄相连的村庄数量(包括自己) 3.修复被摧毁的村庄,优先修复最近被摧毁的........ ...

  5. Unity doesn't load, no Launcher, no Dash appears

    1. 重新安装 ubuntu-desktop不起作用. Enter the following commands:- Ctrl+Alt+F1 login there by user name and ...

  6. Linux 下如何安装软件?

    http://zhidao.baidu.com/link?url=OkQCOZtVMXhasC8x9zFTZOumsFKf0WW25Ckr2wBF1xO08EsjrBpnMaTBlIAUYdxZ408 ...

  7. javascript第十八课:windowd对象的方法

    window.confirm('确定删除吗?'); //当用户点击一个按钮出发一个事件的时候,弹出一个提示框让网友确认,返回一个bool值,点确定的话,返回true,点取消,返回flase windo ...

  8. ios ViewController present不同的方向

    First ViewController CATransition *transition = [CATransition animation]; transition.duration = 0.3; ...

  9. OC基础7:变量和数据类型

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.有时候初始化需要让对象带有初始值,那么 ...

  10. Java虚拟机类载入顺序

    Java虚拟机在载入类的时候.先初始化父类静态变量.再初始化子类静态变量.然后载入父类,最后载入子类 public class Parent { static{ System.out.println( ...