多数のテーブルから文字列を作成し、それを返すストアド プロシージャを作成しました。SSMS から完全に機能します。SP は、正しい値が返されないサードパーティのソフトウェアから呼び出されます。
SP のポイントは、ファイルに加えられた変更のアセットタグを生成することです。SPは以下です
ALTER PROCEDURE [dbo].[usp_ACREpdflibTAG] -- ストアド プロシージャのパラメータをここに追加します @SJID INT AS BEGIN DECLARE @Asset VARCHAR(2000) SET ANSI_NULLS OFF
SELECT @Asset = COALESCE(@Asset, '') + { fn CONCAT(tPdfChanges.ShortHand, '=1,') } FROM 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@@@
ご覧のとおり、asset タグの最初の部分の 1 つの変更のみが一致しています。
プロファイラーを使用して何が起こっているかを確認しました.SSMSから実行するとRPCとして、サードパーティソフトウェアから実行するとSQLバッチクエリとして実行されます.
誰でも助けることができますか?