MYSQL在函数不能用
SELECT 变量 = tbl_filed FORM tbl
的语句吗?如下:DROP FUNCTION IF EXISTS fn_name;
delimiter //
CREATE FUNCTION fn_name (DailyDate DATETIME,returntype SMALLINT)
RETURNS DECIMAL(18, 1)
BEGIN
DECLARE BDate DATETIME;
DECLARE qty_return DECIMAL(18, 1); DECLARE `MaxValue` DECIMAL(18, 1); DECLARE `MinValue` DECIMAL(18, 1);
SET qty_return = 0;
SELECT `MaxValue` = ROUND(IFNULL(MAX(Airtemp),0),1) , `MinValue` = ROUND(IFNULL(MIN(Airtemp),0),1)
FROM tbl_name WHERE InDateTime > DATE_ADD(BDate, INTERVAL 23 HOUR) AND InDateTime < DATE_ADD(BDate, INTERVAL '1 0:5' DAY_MINUTE); IF (returntype = 0) THEN SET qty_return = `MinValue` ; ELSEIF (returntype = 1) THEN SET qty_return = `MaxValue`; END IF; RETURN qty_return; END//
delimiter ;
当去掉SELECT `MaxValue` = ROUND(IFNULL(MAX(Airtemp),0),1) , `MinValue` = ROUND(IFNULL(MIN(Airtemp),0),1)
FROM hy_tmpr_c WHERE SingInDateTime > DATE_ADD(BDate, INTERVAL 23 HOUR) AND SingInDateTime < DATE_ADD(BDate, INTERVAL '1 0:5' DAY_MINUTE); 编译就通过了,否则出现错误提示:
"Not allowed to return a result set from a from"但是这句才是这个函数的主要功能,怎么办?
SELECT 变量 = tbl_filed FORM tbl
的语句吗?如下:DROP FUNCTION IF EXISTS fn_name;
delimiter //
CREATE FUNCTION fn_name (DailyDate DATETIME,returntype SMALLINT)
RETURNS DECIMAL(18, 1)
BEGIN
DECLARE BDate DATETIME;
DECLARE qty_return DECIMAL(18, 1); DECLARE `MaxValue` DECIMAL(18, 1); DECLARE `MinValue` DECIMAL(18, 1);
SET qty_return = 0;
SELECT `MaxValue` = ROUND(IFNULL(MAX(Airtemp),0),1) , `MinValue` = ROUND(IFNULL(MIN(Airtemp),0),1)
FROM tbl_name WHERE InDateTime > DATE_ADD(BDate, INTERVAL 23 HOUR) AND InDateTime < DATE_ADD(BDate, INTERVAL '1 0:5' DAY_MINUTE); IF (returntype = 0) THEN SET qty_return = `MinValue` ; ELSEIF (returntype = 1) THEN SET qty_return = `MaxValue`; END IF; RETURN qty_return; END//
delimiter ;
当去掉SELECT `MaxValue` = ROUND(IFNULL(MAX(Airtemp),0),1) , `MinValue` = ROUND(IFNULL(MIN(Airtemp),0),1)
FROM hy_tmpr_c WHERE SingInDateTime > DATE_ADD(BDate, INTERVAL 23 HOUR) AND SingInDateTime < DATE_ADD(BDate, INTERVAL '1 0:5' DAY_MINUTE); 编译就通过了,否则出现错误提示:
"Not allowed to return a result set from a from"但是这句才是这个函数的主要功能,怎么办?
解决方案 »
- mysqldump 导入但导入不完全
- 继续求知-这样的数据库如何设计比较好
- 如何 按照把a=3做条件查询?
- MySql在存储过程中创建触发器出现问题
- 求排序sql,第一标准是价格,第二标准是数量,分别存在不同的表里
- 各位大虾:问一个奇怪的问题,我在window2000 Prefession 下安装了MySQL4.0,但MySQL好象不能启动,这是为什么??
- 关于MySql下载及安装的问题
- MySql.Data.MySqlClient.MySqlException: Unknown column 'Extent1.DailyLogLineID' i
- 不用存储过程,用mysql查找m1到m8字段为空的数量总和
- 求助!!!关于My Sql批量插入数据的方法!
- MYSQL语法排错!
- MySQL server has gone away 解决办法?
into `MaxValue` , `MinValue`
FROM tbl_name WHERE InDateTime > DATE_ADD(BDate, INTERVAL 23 HOUR) AND InDateTime < DATE_ADD(BDate, INTERVAL '1 0:5' DAY_MINUTE);
select ...into 的语法我也用过了,也不行。
这样可以:
ROUND(IFNULL(MAX(Airtemp),0),1) into `MaxValue`
但这样不行
ROUND(IFNULL(MAX(Airtemp),0),1) into `MaxValue`, ROUND(IFNULL(MIN(Airtemp),0),1) into `MinValue`分两次?
select a1,a2,a3... into 变量1,变量2... from tb
SELECT ROUND(IFNULL(MAX(Airtemp),0),1) ,ROUND(IFNULL(MIN(Airtemp),0),1)
into `MaxValue` , `MinValue`
FROM tbl_name WHERE InDateTime > DATE_ADD(BDate, INTERVAL 23 HOUR) AND InDateTime < DATE_ADD(BDate, INTERVAL '1 0:5' DAY_MINUTE);
或者
SELECT tbl_filed into 变量 FORM tbl
SELECT `MaxValue` := ROUND(IFNULL(MAX(Airtemp),0),1) , `MinValue`:= ROUND(IFNULL(MIN(Airtemp),0),1)
FROM tbl_name WHERE InDateTime > DATE_ADD(BDate, INTERVAL 23 HOUR) AND InDateTime < DATE_ADD(BDate, INTERVAL '1 0:5' DAY_MINUTE);
用户变量的形式为@var_name,
必须加@吗?是不是如果没用@,执行FUNCTION 返回出来的标值就为NULL?