我有一个非常简单的检查过程,它接受逗号分隔的字符串,并验证具有该键的记录是否具有正确的状态。在过程结束时,将使用逗号分隔的字符串,字符串中的项目计数和所做的更新计数创建审计。审核始终反映0次更新。但是,当我使用与运行该过程的作业相同的登录在SSMS中运行该过程时,我得到更新。我知道有一些简单的事情发生但看不到它。例程在下面指定
BEGIN
SET NOCOUNT ON;
declare @loads Table(shipmentnumber varchar(20))
declare @passinfo Table (ID int, fieldname varchar(50), field nvarchar(max))
select @info = replace(@info, '"','')
declare @cnt1 int, @cnt2 int, @error varchar(100)
insert into @loads
select rtrim(ltrim(splitdata)) from dbo.fnsplitstring(@info, ',')
set @cnt1 = @@rowcount
update loads
set loadstatus = 102
where shipmentnumber in (select shipmentnumber from @loads)
and loadstatus <> 102
set @cnt2 = @@rowcount
INSERT INTO [dbo].[ShipperSPAudit]
([SP]
,[parm1]
,[parm2],parm3,parm4
,[requesteddate]
, userid)
VALUES
('CPCheckCancel'
,cast(@shipper as varchar)
,@info, cast(@cnt1 as varchar), cast(@cnt2 as varchar)
,getdate()
,@userid)
END
答案 0 :(得分:0)
我没有合理的解释为什么它在SSMS中起作用而不是作为预定的工作。从dbo.fnsplitstring(@ info,',')更改了选择rtrim(ltrim(splitdata))的代码行,从dbo.fnsplitstring(@info,',')中选择子字符串(splitdata,1,8)为我知道传入的逗号分隔字段长度应为8个字符。代码现在在作为作业运行和在SSMS中运行时有效。