34,594
社区成员
发帖
与我相关
我的任务
分享
substring(convert (varchar(50),(a.nMargin/a.nSaleAmount)*100),1,5)+'%' end --限制被除数不为零
[/quote]
试过啦,仍然报错
消息 8115,级别 16,状态 5,过程 usp_OilStationSaleMonth,第 139 行
将 numeric 转换为数据类型 varchar 时出现算术溢出错误。[/quote]
这次双管齐下,改成这样试试,加了一个cast转化,然后varchar(50):
substring(convert(varchar(50),cast((a.nMargin/a.nSaleAmount)*100 as numeric(8,2)),1,5)+'%' end[/quote]
这样存储过程是执行成功,但是还有一个错误
消息 217,级别 16,状态 1,过程 usp_OilStationSaleMonth,第 218 行
超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)。[/quote]
对了 你写的是存储过程usp_OilStationSaleMonth把,是不是在里面usp_OilStationSaleMonth存储过程中,有这样的语句:
exec usp_OilStationSaleMonth ……
substring(convert (varchar(50),(a.nMargin/a.nSaleAmount)*100),1,5)+'%' end --限制被除数不为零
[/quote]
试过啦,仍然报错
消息 8115,级别 16,状态 5,过程 usp_OilStationSaleMonth,第 139 行
将 numeric 转换为数据类型 varchar 时出现算术溢出错误。[/quote]
这次双管齐下,改成这样试试,加了一个cast转化,然后varchar(50):
substring(convert(varchar(50),cast((a.nMargin/a.nSaleAmount)*100 as numeric(8,2)),1,5)+'%' end[/quote]
这样存储过程是执行成功,但是还有一个错误
消息 217,级别 16,状态 1,过程 usp_OilStationSaleMonth,第 218 行
超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)。
substring(convert (varchar(50),(a.nMargin/a.nSaleAmount)*100),1,5)+'%' end --限制被除数不为零
[/quote]
试过啦,仍然报错
消息 8115,级别 16,状态 5,过程 usp_OilStationSaleMonth,第 139 行
将 numeric 转换为数据类型 varchar 时出现算术溢出错误。[/quote]
这次双管齐下,改成这样试试,加了一个cast转化,然后varchar(50):
substring(convert(varchar(50),cast((a.nMargin/a.nSaleAmount)*100 as numeric(8,2)),1,5)+'%' end
substring(convert (varchar(50),(a.nMargin/a.nSaleAmount)*100),1,5)+'%' end --限制被除数不为零
[/quote]
试过啦,仍然报错
消息 8115,级别 16,状态 5,过程 usp_OilStationSaleMonth,第 139 行
将 numeric 转换为数据类型 varchar 时出现算术溢出错误。
substring(convert (varchar(50),(a.nMargin/a.nSaleAmount)*100),1,5)+'%' end --限制被除数不为零
case when nSaleAmount=0 then 0 else substring(convert (varchar(20),(a.nMargin/a.nSaleAmount)*100),1,5)+'%' end
改改
CASE WHEN nLastMonthSale = 0 THEN '0'
ELSE STR( ( a.nThisMonthSale - a.nLastMonthSale )/ a.nLastMonthSale * 100,5
2) + '%'
END
insert into #lyg
select b.sStationNO,
case when nSaleAmount=0 then '0' else substring(convert (varchar(20),(a.nMargin/a.nSaleAmount)*100),1,5)+'%' end --限制被除数不为零
from tSaleDaily a,#ly b where a.sStationNO=b.sStationNO and a.dReportDate between dateadd(dd,-392,@BeginDate) and dateadd(dd,-364,@BeginDate)
group by b.sStationNO,a.nMargin,a.nSaleAmount
update #ly set nThisMonthMaoLiLv=a.nMaoLiLv from #lyh a,#ly b where a.sStationNO=b.sStationNO