当前位置: 代码迷 >> Sql Server >> 标量函数,该如何解决
  详细解决方案

标量函数,该如何解决

热度:3   发布时间:2016-04-24 09:39:22.0
标量函数


alter FUNCTION [dbo].[FN_asgetsql](@kri int,@jri int)
RETURNS varchar(max)
AS
BEGIN
declare @colx nvarchar(max);
set @colx='';
select @colx=@colx+'sum(case when FCheckDate>='''+cast(kri as nvarchar(15))+''' 
and FCheckDate<='''+cast(jri as nvarchar(15))+''' then zjj end) as '''+zhi+''','
 from as_time where mytype='月' and myid>@kri and myid<@jri
set @colx=left(@colx,LEN(@colx)-1)
RETURN(@colx)
END
GO

select dbo.FN_asgetsql(1,2)





消息 537,级别 16,状态 5,第 1 行
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。


请问错在哪里了,如果是一个参数是正确的
------解决思路----------------------
在left(@colx,LEN(@colx)-1)这里出错,
len(@colx)=0,导致left(@colx,-1)报错。
------解决思路----------------------
同意1楼,应该加个判断
------解决思路----------------------
select  LEN(@colx)-1   出来,看看值是什么
  相关解决方案