Показать сообщение отдельно
Старый 04.08.2006, 14:09   #3  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Thumbs up Microsoft жжёт
Нет, я просто тащусь от этой компании ))

По приведенной мази ссылке, цитирую:
Цитата:
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'
Прошу завести пользователя Майкрософт, я ему рейтинг понижать/повышать буду))
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/