语句:
SET $FNeedDay=$T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC);错误码: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$FNeedDay=$T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC)' at line 22
SET $FNeedDay=$T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC);错误码: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$FNeedDay=$T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC)' at line 22
解决方案 »
- 请大家帮忙看看这条SQL该怎么写
- mysqldump字符集问题
- 请问如何对分组内部进行排序
- 是否建立索引的问题
- 急问关于触发器问题!!!!!!!!!(很急)
- MySQL 5.0修改max_allowed_packet的问题
- DOUBLE(M, D)的M是什么意思,是不是和DECIMAL(p,s)的p差不多
- 把mysql的data目录下的数据库文件拷贝到另一台机器的mysql的data目录下,为什么myisam的表可以用,innoDB却出错?
- MySQL启动后,在X-window里什么都看不到!
- oracle存储过程转mysql格式的,菜鸟求助各位大师。
- 求Postgresql 查询语句
- php连不上mysql
mysql> CREATE PROCEDURE p_lacasadeco ()
-> BEGIN
-> declare $FNeedDay,$T_FAllAcount,$T_FWasteHour,$T_FAverAmount,$T_FMachineQty,$T_FBC int default 1;
-> SET $FNeedDay=$T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC);
-> select $FNeedDay;
-> END;
-> //
Query OK, 0 rows affected (0.27 sec)mysql> delimiter ;
mysql> call p_lacasadeco();
+-----------+
| $FNeedDay |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql>
BEGIN
DECLARE $T_FAllAcount,$T_FPlanAcount DECIMAL(28,10);
DECLARE $i,$j int;
DECLARE $T_FNote1 VARCHAR(128);
DECLARE $T_FNote2 VARCHAR(256);
DECLARE $T_FNote3 VARCHAR(128);
DECLARE $T_FWasteHour,$FNeedDay DECIMAL(10,2);
DECLARE $T_FAverAmount,$T_FMachineQty,$T_FBC INT;
DECLARE $T_FGxName,$T_FJtName VARCHAR(45);
DROP TABLE IF EXISTS PMC_GetThroughput;
CREATE TABLE PMC_GetThroughput(
FOrder INT ,
FClassID INT DEFAULT 0,
FNote1 VARCHAR(128),
FNote2 VARCHAR(256),
FNote3 VARCHAR(128)
)ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
SET $T_FAllAcount=0;
SET $T_FPlanAcount=0;
SET $i=0;
SET $j=0;
IF $M_FOrder!=0 THEN
SELECT FWasteHour,FAverAmount,FMachineQty,FBC,FGxName,FJtName
INTO $T_FWasteHour,$T_FAverAmount,$T_FMachineQty,$T_FBC,$T_FGxName,$T_FJtName
FROM WincoBosCombined_Output
WHERE(FOrder=$M_FOrder)AND(FClassID=$M_FClassID);
#总体情况
SELECT SUM(FBPSL-FJGSL),COUNT(FWorkNo)
INTO $T_FAllAcount,$i
FROM WincoBosCombinedPmcEntry
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2)AND(FClassID=$M_FClassID)
GROUP BY FOrder,FClassID;
SET $T_FNote1=CONCAT('當前機臺為',$T_FJtName);
SET $FNeedDay=$T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC);
IF($T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC))>4 THEN
SET $T_FNote1=CONCAT($T_FNote1,',系統完成所有訂單需','完成目前狀態為忙');
END IF;
SELECT SUM(FBPSL-FJGSL),COUNT(FWorkNo)
INTO $T_FPlanAcount,$j
FROM WincoBosCombinedPmcEntry
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2)AND(FClassID=$M_FClassID)AND(FisPlan=1)
GROUP BY FOrder,FClassID,FisPlan;
INSERT INTO PMC_GetThroughput
VALUES($M_FOrder,$M_FClassID,$T_FNote1,$T_FNote2,$T_FNote3);
END IF;
SELECT * FROM PMC_GetThroughput;
DROP TABLE PMC_GetThroughput;
END$$DELIMITER ;
把你前面这个所谓的空格删除就行了。你放了一个中文全角的空格!
DECLARE $FNeedDay INT
没有问题了,但当对
SET $FNeedDay=$T_FAllAcount/((8-$T_FWasteHour)*$T_FAverAmount*$T_FMachineQty*$T_FBC);
赋值时,如果右边等于0.15即小于0.5时,$FNeedDay=0,有没有办法让它小数点位小于0.5时也向上入一位
select case when mid(0.15,locate('.',0.15)+1,1)>0 then 1 else 0 end
+---------+-----------+------------+
| CEIL(1) | CEIL(0.5) | CEIL(0.15) |
+---------+-----------+------------+
| 1 | 1 | 1 |
+---------+-----------+------------+
1 row in set (0.00 sec)mysql>
select case when mid(0.15,locate('.',0.15)+1,1)>0 then 1 else 0 end
将0.15修改成变量 OR 字段名ORCEILING(X), CEIL(X) Returns the smallest integer value not less than X. CEILING() and CEIL() are synonymous. mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEIL(-1.23);
-> -1