Нет, я просто тащусь от этой компании ))
По приведенной мази ссылке, цитирую:
Цитата:
Direct SQL
When direct SQL is used through the Connection and Statement classes, it is subject to SQL injection threats. Classes that wrap these kernel classes—for example, the SysSQLBuilder classes—are equally dangerous. You should keep in mind that record-level security and field-level security are not enforced on the Statement class.
To learn more about SQL injection attacks, see the article, Stop SQL Injection Attacks Before They Stop You, on MSDN.
Ля-ля-ля - не юзайте прямой SQL пока он не поюзал Вас.
Открываем Читвёртую Аксапту, и что мы там видим? Правильно! Прямой SQL)))
X++:
/* This method will build following statement in a str:
execute sp_executesql N'UPDATE InventSum
SET InventSum.CostAmountPhysical = InventSum.CostAmountPhysical +
InventSumDelta.SUM_CostAmountPhysical,
InventSum.PostedValue = InventSum.PostedValue +
InventSumDelta.SUM_PostedValue,
InventSum.Qty = InventSum.Qty +
InventSumDelta.SUM_Qty,
.....
.....
InventSum.LastUpdDatePhysical = CASE WHEN InventSum.LastUpdDatePhysical > InventSumDelta.MAX_LastUpdDatePhysical
THEN InventSum.LastUpdDatePhysical
ELSE InventSumDelta.MAX_LastUpdDatePhysical
END,
InventSum.LastUpdDateExpected = CASE WHEN InventSum.LastUpdDateExpected > InventSumDelta.MAX_LastUpdDateExpected
THEN InventSum.LastUpdDateExpected
ELSE InventSumDelta.MAX_LastUpdDateExpected
END,
InventSum.ClosedQty = CASE WHEN ((InventSum.PostedQty + InventSumDelta.SUM_PostedQty) = 0 AND
(InventSum.Deducted + InventSumDelta.SUM_Deducted) = 0 AND
(InventSum.Picked + InventSumDelta.SUM_Picked) = 0 AND
....
....
)
THEN 1
ELSE 0
END,
InventSum.Closed = CASE WHEN ((InventSum.PostedValue + InventSumDelta.SUM_PostedValue) = 0 AND
(InventSum.PhysicalValue + InventSumDelta.SUM_PhysicalValue) = 0 AND
....
....
)
THEN 1
ELSE 0
END
FROM (SELECT SUM(CostAmountPhysical) AS SUM_CostAmountPhysical,
SUM(PostedValue) AS SUM_PostedValue,
SUM(Qty) AS SUM_Qty,
..... AS ...,
..... AS ...,
MAX(LastUpdDatePhysical) AS MAX_LastUpdDatePhysical,
MAX(LastUpdDateExpected) AS MAX_LastUpdDateExpected,
InventSumDelta.ItemId,
InventSumDelta.InventDimId
FROM InventSumDelta
WHERE InventSumDelta.DataAreaId = @p1
AND InventSumDelta.TTSId = @p2
AND InventSumDelta.IsAggregated = 0
GROUP BY InventSumDelta.ItemId, InventSumDelta.InventDimId
) AS InventSumDelta
WHERE InventSum.DataAreaId = @p1
AND InventSum.ItemId = InventSumDelta.ItemId
AND InventSum.InventDimId = InventSumDelta.InventDimId
',N'@p1 NVARCHAR(3), @p2 BIGINT',@p1=%1, @p2='%2'
Прошу завести пользователя Майкрософт, я ему рейтинг понижать/повышать буду))