sql sever存储过程为什么调用时都提示返回值为null

我的存储过程如下:setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERPROC[dbo].[DRIVE](@STARTCHAR,@DE... 我的存储过程如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROC [dbo].[DRIVE](@START CHAR,@DESTINATION CHAR,@MODEL CHAR) AS
DECLARE @OIL FLOAT
DECLARE @DISTANCE INT
DECLARE @HFEE MONEY
DECLARE @FEE MONEY
SELECT @OIL=(SELECT OIL FROM CTYPE WHERE MODEL#=@MODEL)
SELECT @DISTANCE=(SELECT DISTANCE FROM ROAD WHERE START=@START AND DISTINATION=@DESTINATION)
SELECT @HFEE=(SELECT FEE FROM HIGHWAY WHERE ENTERANCE=@START AND [EXIT]=@DESTINATION)
SELECT @FEE=@HFEE+@OIL*@DISTANCE
return @fee
当我调用该存储过程是,总是提示:
DRIVE过程试图返回状态 NULL,这是不允许的。将返回状态 0。
0.00。
这是为什么,怎么解决这个问题
展开
 我来答
Ice海Man
2013-12-04 · TA获得超过302个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:205万
展开全部
可能是因为SELECT @FEE=@HFEE+@OIL*@DISTANCE 其中
@HFEE;@OIL;@DISTANCE 三个值中有空的 你可以改成
@FEE=ISNULL(@HFEE.0)+ISNULL(@OIL,0)*ISNULL(@DISTANCE,0)
如果是空值中0代替
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式