【发布时间】:2015-10-28 21:38:00
【问题描述】:
我想使用下面的代码创建一个函数,当我运行查询时返回的值是
21902/2061=0.094101
用作函数的代码
BEGIN
DECLARE @nat_weight INT =0;
DECLARE @mattype1 INT;
DECLARE @mattype2 INT;
DECLARE @mattype3 INT;
DECLARE @CycleHopper_02 INT;
DECLARE @PRCT_VAL FLOAT;
--DECLARE @me38_cycle_data_ndx INT;
-- get material type, need only hoppers 1-3, hopper 4,5,6 material type will never = 2
SET @mattype1 = (SELECT typehopper_01 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002);
SET @mattype2 = (SELECT typehopper_02 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002);
SET @mattype3 = (SELECT typehopper_03 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
SET @CycleHopper_02 = (SELECT CycleHopper_02 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
-- if material type=2 then add to @nat_weight ,
IF @mattype1 = 2
set @nat_weight = (SELECT cyclehopper_01 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
IF @mattype2 = 2
set @nat_weight =@nat_weight+ (SELECT cyclehopper_02 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
IF @mattype3 = 2
set @nat_weight =@nat_weight+ (SELECT cyclehopper_03 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 )
-- device hoper weight by natural weight, 0 if dev/0
SET @PRCT_VAL= (SELECT COALESCE(CAST(@CycleHopper_02 AS FLOAT)/CAST(@nat_weight AS FLOAT),0));
IF @PRCT_VAL=1
SET @PRCT_VAL=100
当我创建函数时,返回值为 0,这可能是什么原因?
CREATE FUNCTION dbo.hprpct_02(@me38_cycle_data_ndx INT)
RETURNS INT
AS
BEGIN
DECLARE @nat_weight INT =0;
DECLARE @mattype1 INT;
DECLARE @mattype2 INT;
DECLARE @mattype3 INT;
DECLARE @CycleHopper_02 INT;
DECLARE @PRCT_VAL FLOAT;
--DECLARE @me38_cycle_data_ndx INT;
-- get material type, need only hoppers 1-3, hopper 4,5,6 material type will never = 2
SET @mattype1 = (SELECT typehopper_01 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002);
SET @mattype2 = (SELECT typehopper_02 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002);
SET @mattype3 = (SELECT typehopper_03 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
SET @CycleHopper_02 = (SELECT CycleHopper_02 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
-- if material type=2 then add to @nat_weight ,
IF @mattype1 = 2
set @nat_weight = (SELECT cyclehopper_01 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
IF @mattype2 = 2
set @nat_weight =@nat_weight+ (SELECT cyclehopper_02 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 );
IF @mattype3 = 2
set @nat_weight =@nat_weight+ (SELECT cyclehopper_03 FROM mm_Cycle_Data WHERE me38_cycle_data_ndx=8002 )
-- device hoper weight by natural weight, 0 if dev/0
SET @PRCT_VAL= (SELECT COALESCE(CAST(@CycleHopper_02 AS FLOAT)/CAST(@nat_weight AS FLOAT),0));
IF @PRCT_VAL=1
SET @PRCT_VAL=100
RETURN @PRCT_VAL
END
【问题讨论】:
-
你正在返回 int
标签: sql-server-2008 user-defined-functions