MySQLmysql 自定义函数数中要删除表怎么办

2015年6月 其他数据库开发大版内专家分月排行榜第二2015年5月 其他数据库开发大版内专家分月排行榜第二2013年6月 其他数据库开发大版内专家分月排行榜第二2013年3月 其他数据库开发大版内专家分月排行榜第二2012年12月 其他数据库开发大版内专家分月排行榜第二2012年10月 其他数据库开发大版内专家分月排行榜第二2012年9月 其他数据库开发大版内专家分月排行榜第二2012年7月 其他数据库开发大版内专家分月排行榜第二2012年6月 其他数据库开发大版内专家分月排行榜第二2011年11月 其他数据库开发大版内专家分月排行榜第二2011年10月 其他数据库开发大版内专家分月排行榜第二2011年9月 其他数据库开发大版内专家分月排行榜第二2011年6月 其他数据库开发大版内专家分月排行榜第二2011年5月 其他数据库开发大版内专家分月排行榜第二2011年4月 其他数据库开发大版内专家分月排行榜第二2011年3月 其他数据库开发大版内专家分月排行榜第二2011年2月 其他数据库开发大版内专家分月排行榜第二2010年12月 其他数据库开发大版内专家分月排行榜第二2010年11月 其他数据库开发大版内专家分月排行榜第二2010年9月 其他数据库开发大版内专家分月排行榜第二2010年7月 其他数据库开发大版内专家分月排行榜第二2010年4月 其他数据库开发大版内专家分月排行榜第二2010年3月 其他数据库开发大版内专家分月排行榜第二2010年1月 其他数据库开发大版内专家分月排行榜第二2009年12月 其他数据库开发大版内专家分月排行榜第二2008年6月 其他数据库开发大版内专家分月排行榜第二2008年5月 其他数据库开发大版内专家分月排行榜第二2008年4月 其他数据库开发大版内专家分月排行榜第二2007年5月 其他数据库开发大版内专家分月排行榜第二2007年1月 其他数据库开发大版内专家分月排行榜第二2006年10月 其他数据库开发大版内专家分月排行榜第二2006年8月 其他数据库开发大版内专家分月排行榜第二2006年6月 其他数据库开发大版内专家分月排行榜第二2006年4月 其他数据库开发大版内专家分月排行榜第二2005年9月 其他数据库开发大版内专家分月排行榜第二
2013年12月 其他数据库开发大版内专家分月排行榜第三2013年5月 其他数据库开发大版内专家分月排行榜第三2013年4月 其他数据库开发大版内专家分月排行榜第三2013年2月 其他数据库开发大版内专家分月排行榜第三2013年1月 其他数据库开发大版内专家分月排行榜第三2012年5月 其他数据库开发大版内专家分月排行榜第三2012年4月 其他数据库开发大版内专家分月排行榜第三2012年3月 其他数据库开发大版内专家分月排行榜第三2012年2月 其他数据库开发大版内专家分月排行榜第三2011年8月 其他数据库开发大版内专家分月排行榜第三2011年7月 其他数据库开发大版内专家分月排行榜第三2010年10月 其他数据库开发大版内专家分月排行榜第三2010年5月 其他数据库开发大版内专家分月排行榜第三2010年2月 其他数据库开发大版内专家分月排行榜第三2009年11月 其他数据库开发大版内专家分月排行榜第三2009年10月 其他数据库开发大版内专家分月排行榜第三2009年5月 其他数据库开发大版内专家分月排行榜第三2009年4月 其他数据库开发大版内专家分月排行榜第三2008年12月 其他数据库开发大版内专家分月排行榜第三2008年11月 其他数据库开发大版内专家分月排行榜第三2008年10月 其他数据库开发大版内专家分月排行榜第三2008年9月 其他数据库开发大版内专家分月排行榜第三2007年9月 其他数据库开发大版内专家分月排行榜第三2007年8月 其他数据库开发大版内专家分月排行榜第三2007年4月 其他数据库开发大版内专家分月排行榜第三2007年3月 其他数据库开发大版内专家分月排行榜第三2007年2月 其他数据库开发大版内专家分月排行榜第三2006年7月 其他数据库开发大版内专家分月排行榜第三2006年2月 其他数据库开发大版内专家分月排行榜第三2006年1月 其他数据库开发大版内专家分月排行榜第三2005年11月 其他数据库开发大版内专家分月排行榜第三2005年10月 其他数据库开发大版内专家分月排行榜第三
2007年10月 PHP大版内专家分月排行榜第一2007年12月 其他数据库开发大版内专家分月排行榜第一2007年10月 其他数据库开发大版内专家分月排行榜第一2007年9月 其他数据库开发大版内专家分月排行榜第一
2014年6月 其他数据库开发大版内专家分月排行榜第二2008年11月 其他数据库开发大版内专家分月排行榜第二2006年12月 PHP大版内专家分月排行榜第二2007年9月 PHP大版内专家分月排行榜第二2007年6月 PHP大版内专家分月排行榜第二2008年2月 其他数据库开发大版内专家分月排行榜第二2008年1月 其他数据库开发大版内专家分月排行榜第二2007年11月 其他数据库开发大版内专家分月排行榜第二
2010年6月 其他数据库开发大版内专家分月排行榜第二2010年6月 Oracle大版内专家分月排行榜第二2010年5月 其他数据库开发大版内专家分月排行榜第二
2011年1月 其他数据库开发大版内专家分月排行榜第三2010年12月 其他数据库开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。MySql自定义函数或存储过程 - ITeye问答
我这里有三张表
A表
id&&& 起始时间&&&& 结束时间
B表
id&&& 时间&&& 金额
C表
id&& 起始时间& 结束时间&& 总金额& 总笔数
现在的需求是传入一个时间值从A表里查出时间段,然后在B表里统计这个时间段的总金额、总笔数,再连同起始时间和结束时间一起插入到C表里。
我不知道这样的流程能不能用MySql的存储过程或者函数是否能实现,我自己想了很久没有写出来,如果用存储过程或者函数能实现,应该怎么写。
采纳的答案
DECLARE c_start bigint(50);
DECLARE c_end bigint(50);
DECLARE c_total_money float(11);
DECLARE c_total_quantity int(11);
select 起始时间,结束时间 from A where start_time&=传入的时间 and 传入的时间&=end_time LIMIT 0,1 INTO @c_start,@c_
select count(id),sum(金额) from B where 时间&=@c_start and 时间&=@c_end into @c_total_quantity,@c_total_
insert into C(起始时间,结束时间,总金额,总数量) values(@c_start,@c_end,@c_total_money,@c_total_quantity);
已解决问题
未解决问题自定义函数的格式:
&&&& [DEFINER = { user | CURRENT_USER }]&&
&&&& FUNCTION sp_name ([func_parameter[,...]])&&
&&&& RETURNS type&&
&&&& [characteristic ...] routine_body&&
func_parameter:&&
&&&& param_name type&&&&&
&&&& Any valid MySQL data type&&
characteristic:&&
&&&& LANGUAGE SQL&&
&& | [NOT] DETERMINISTIC&&
&& | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }&&
&& | SQL SECURITY { DEFINER | INVOKER }&&
&& | COMMENT 'string'&&
routine_body:&&
&&&& Valid SQL procedure statement&&
自定义函数与存储过程的区别
1,函数方法的参数列表只允许IN类型的参数,并且不允许指定IN关键字
2,函数方法返回一个单一的值,值的类型在存储方法的头部定义
3,函数方法可以在SQL语句内部调用
4,函数方法不能返回结果集
官方文档:
创建自定义函数
& & & & CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL}
& & & & BEGIN
& & & & & & //函数实现的语句
& & & & END;
& & & & aggregate 指定创建的函数是普通的自定义函数,还是AGGREGATE函数。
& & & & function_name 是用在SQL声明中以备调用的函数名字。
& & & & RETURNS 子句说明函数返回值的类型。&
& & & & 每次服务器启动的时候会重新加载所有有效函数,除非使用--skip-grant-tables参数启动d。在这种情况下, 将跳过UDF的初始化,UDF不可用。
&& & & mysql文档说明:一个AGGREGATE函数就像一个MySQL固有的集合(总和)函数一样起作用,比如,SUM或COUNT()函数。要使得AGGREGATE 起作用,mysql.func表必须包括一个type列。如果mysql.func表没有这一 列,则应该运行mysql_fix_privilege_tables脚本来创建此列。
创建自定义函数:
mysql& delimiter //
mysql& DROP FUNCTION IF EXISTS fun_rand_key //
mysql& CREATE FUNCTION fun_rand_key(iparam int) RETURNs int
&&& -& BEGIN
&&& -& declare i_
&&& -& set i_return =iparam + floor(rand()*100);
&&& -& return i_
&&& -& END;
使用自定义函数
1 row in set (0.00 sec)
mysql& select fun_rand_key(id)
+------------------+
| fun_rand_key(id) |
+------------------+
|&&&&&&&&&&&&&&& 9 |
+------------------+
1 row in set (0.00 sec)
查看自定义函数
& & & & SHOW CREATE FUNTION function_
或&& SHOW FUNCTION STATUS [ LIKE '' ];
如:mysql& show function status \G;
*************************** 1. row ***************************
&&&&&&&&&&&&&&&&& Db: testdb
&&&&&&&&&&&&&&& Name: fun_rand_key
&&&&&&&&&&&&&&& Type: FUNCTION
&&&&&&&&&&&& Definer: root@localhost
&&&&&&&&&&& Modified:
&&&&&&&&&&&& Created:
&&&&&& Security_type: DEFINER
&&&&&&&&&&&& Comment:
character_set_client: gbk
collation_connection: gbk_chinese_ci
& Database Collation: gbk_chinese_ci
1 row in set (0.01 sec)
mysql& show function status like '%rand%' \G;
*************************** 1. row ***************************
&&&&&&&&&&&&&&&&& Db: testdb
&&&&&&&&&&&&&&& Name: fun_rand_key
&&&&&&&&&&&&&&& Type: FUNCTION
&&&&&&&&&&&& Definer: root@localhost
&&&&&&&&&&& Modified:
&&&&&&&&&&&& Created:
&&&&&& Security_type: DEFINER
&&&&&&&&&&&& Comment:
character_set_client: gbk
collation_connection: gbk_chinese_ci
& Database Collation: gbk_chinese_ci
1 row in set (0.00 sec)
No query specified
mysql& show create function fun_rand_key \G;
*************************** 1. row ***************************
&&&&&&&&&&& Function: fun_rand_key
&&&& &&&&&&&sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITU
&&&& Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `fun_rand_key`(
iparam int) RETURNS int(11)
declare i_
set i_return =iparam + floor(rand()*100);
character_set_client: gbk
collation_connection: gbk_chinese_ci
& Database Collation: gbk_chinese_ci
1 row in set (0.00 sec)
删除自定义函数
& & & & DROP FUNCTION [ IF EXISTS ] function_
阅读(...) 评论()mysql用户自定义函数 - 为月沉沦 - ITeye技术网站
博客分类:
工作中以前是使用纯JAVA语法的hsqldb数据库,在hsqldb的sql语句中可以直接调用java定义的函数。后来由于性能问题将hsqldb改为mysql数据库,导致以前用java语法定义的函数不能够在sql语句中直接调用,就需要自己向mysql数据库中添加用户自定义函数。
在网上搜了下,只要有几种定义方式,一种是通过mysql调用c,或者c++写的函数文件,这种定义方式比较复杂。另一种是直接写存储函数过程。
由于我的数据库是和应用程序打包成exe文件,在应用程序安装时对mysql采用绿色安装方法。
mysql数据的安装方法,
在应用程序的安装包中,已经包含了mysql绿色版压缩文件,和对应的数据库文件mydata压缩包,并预先配置好my.ini文件。注:mysql里my.ini文件里[mysqld]预先加上 log-bin-trust-function-creators=1;
安装过程分别解压mysql和mydata。
1,把mysql注册为操作系统后台服务,并指明数据库文件为mydata文件夹。
2,使用create database TEST DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_来指明数据库为gbk支持中文的字符集。注:此处为了解决不支持中文字符问题;
3,使用mysql的可视化工具,我用了Navicat for MySQL,建立和TEST数据库的连接,并在TEST 数据库下创建函数并保存。
4,从mydata文件加下找到TEST 文件夹并复制出来,添加到应用程序安装包中的mydta压缩包中。
5,卸载mysql,并重新安装,函数已经添加到数据库中,应用程序已经通过sql直接调用;
ps:以前没有接触过mysql的函数创建,刚开始写函数时不会,写了几次,就觉得很简单了。
Danker.Dai
浏览: 46713 次
来自: 成都
System.setProperty(&java.a ...
你好,我按照这段代码运行了,可是在打开的模拟器上查询到的ime ...
你好,请问如何直接修改真机上面的imei呢?String ol ...
谢谢啊!!好使!
很强大的代码}

我要回帖

更多关于 mysql 自定义函数 if 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信