SQL Batch返回不同的结果到RPC

时间:2012-07-26 08:52:18

标签: sql batch-file ssms

我编写了一个存储过程,它从多个表构建一个字符串然后返回它。它从SSMS完美运行,SP从第三方软件调用,在该软件中没有返回正确的值。

SP的目的是生成已对文件进行更改的资产标签。 sp低于

ALTER PROCEDURE [dbo]。[usp_ACREpdflibTAG]      - 在此处添加存储过程的参数     @SJID INT 如 开始     DECLARE @Asset VARCHAR(2000)     SET ANSI_NULLS OFF

SELECT @Asset = COALESCE(@Asset,'')+ {fn CONCAT(tPdfChanges.ShortHand,'= 1,')} 来自tPdfChanges WHERE SubJobID = @SJID

DECLARE @AssetTag VARCHAR(4000)

SET @AssetTag = (SELECT 
'@@@AssetTagStart@@@' + 
@Asset
+ 'Desc=' + a.sName
+ ',UPC=' + h.sBarcodeStd
+ ',Cat=' + CAST(b.GACategoryID AS VARCHAR(10))
+ ',Type=' + CAST(d.GAProductTypeID AS VARCHAR(10))
+ ',PackFormat=' + CAST(f.GAPackTypeID AS VARCHAR(10))
+ ',DispDate=' + ISNULL(CONVERT ( varchar  , g.DCompleted ,105 ), '')
+ '@@@AssetTagEnd@@@'
FROM
tSubJob a   
WHERE
a.ID = @SJID)


select @AssetTag
END

我不得不从查询中删除表名,因为它们对我正在为之工作的业务敏感。

从SSMS运行时,将返回以下内容:

@@@AssetTagStart@@@CutChg=1,DesChg=1,UPCChg=1,ProChg=1,IngChg=1,NutChg=1,StoreChg=1,CookChg=1,TtlChg=1,LegChg=1,AgyChg=1,WeightChg=1,CountryChg=1,ImpChg=1,OtherChg=1,Desc=Testing Triggers,UPC=,Cat=27,Type=3,PackFormat=38,DispDate=25-07-2012@@@AssetTagEnd@@@

当第三方软件执行时,将返回以下内容:

@@@AssetTagStart@@@CutChg=1,Desc=Testing Triggers,UPC=,Cat=27,Type=3,PackFormat=38,DispDate=25-07-2012@@@AssetTagEnd@@@

如您所见,它只匹配资产标签第一部分中的一个更改。

我使用分析器来查看发生了什么,当我从SSMS执行它时,它是一个RPC,当它从第三方软件执行时它就像一个SQL Batch查询。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我自己刚刚解决了这个问题,我查看了探查器中的进程ID,进一步查看并且第三方软件将rowcount设置为1,我重置了这一切并且一切都运行良好。