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 ...
随机推荐
- Sql Server专题一:索引(下)
首先这次的内容是全文索引,跟前面讲的其实没有多大关系 两种索引的功能和结构都是不同的,普通索引的结构主要以B+树和哈希索引为主,用于实现对字段中数据的精确查找,比如查找某个字段值等于给定值的记录,A= ...
- JQuery 的基本命令
调用jquery的格式 <script> $(document).ready(function() { }); </script> 笔记 1.现在让我们开始写第 ...
- QT:使用“状态模式”绘制界面
QT与很多GUI库不同(如MFC),它不能随时随地地在界面上画图,只能在界面类的painterEvent中画图,如此一来,想在绘制QT界面时使用状态模式(GOF的23种设计模式之一)就有点困难了,作为 ...
- hibernate 非xml实体类配置方法!
hibernate 非xml实体类配置方法! 这个是hibernate.cfg.xml配置文件 <?xml version='1.0' encoding='UTF-8'?> <!DO ...
- 杭电oj 2719
Tips:本程序没有什么难度,只要按照逻辑进行替换即可,需要注意的是,由于输入串中含有空格符号,所以不能使用scanf("%s",ch);来读取一串,可以使用gets()函数读取一 ...
- Unity 之 Redux 模式(第一篇)—— 人物移动
作者:软件猫 日期:2016年12月6日 转载请注明出处:http://www.cnblogs.com/softcat/p/6135195.html 在朋友的怂恿下,终于开始学 Unity 了,于是有 ...
- The Balance(母函数)
The Balance Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- WAV文件格式分析
一. RIFF概念 在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这样的结构称为"资源互换文件格式"(Resources lnterchange File ...
- jps无法获取到tomcat(java)进程
一.问题描述: Ubuntu 10.10版本,同个JDK 1.6版本,启动tomcat后,使用jps无法获取本机Java进程. 二.jps工作原理: 1. java进程启动时,若没有指定 -Djava ...
- timeout Timeout时间已到.在操作完成之前超时时间已过或服务器未响应
Timeout时间已到.在操作完成之前超时时间已过或服务器未响应 问题 在使用asp.net开发的应用程序查询数据的时候,遇到页面请求时间过长且返回"Timeout时间已到.在操作完成之间超 ...