【问题标题】:SQL Batch Returning Different result to RPCSQL批处理将不同的结果返回给RPC
【发布时间】:2012-07-26 08:52:17
【问题描述】:

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

SP 的重点是生成对文件所做更改的资产标签。 sp在下面

更改程序 [dbo].[usp_ACREpdflibTAG] -- 这里添加存储过程的参数 @SJID INT 作为 开始 声明 @Asset VARCHAR(2000) 设置 ANSI_NULLS 关闭

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

声明@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 查询。

谁能帮忙?

【问题讨论】:

    标签: sql batch-file ssms


    【解决方案1】:

    我自己刚刚解决了这个问题,我在分析器中查看了进程 ID,再往上看,第三方软件将行数设置为 1,我将其重置,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2013-06-13
      相关资源
      最近更新 更多