Daily SQL WTF

A minap épp SQL kódon csináltam code reviewt és belefutottam egy igen érdekes kódrészletbe. A kis piszok természetesen egy hosszú tárolt eljárás közepén bújt meg, szép hosszú változó- és oszlopnevekkel, de a lényeg leegyszerűsítve ez:

DECLARE @a bit = 0
DECLARE @b bit = 0

SELECT    
    @a = 1,
    @b = CASE WHEN @a=1 THEN 1 ELSE 0 END

Vajon mi a gondom vele?

 

Technorati-címkék: ,
Reklámok

5 thoughts on “Daily SQL WTF

  1. kketto

    Gondolom SQL 2005 és fölötte…
    Azaz ha tényleg paralell hajtódik végre, akkor a @b-ben a végére akármi is lehet, attól függően melyik rész jut hamarabb.
    Gondolom én 🙂
    ( MAXDOP(1) hint-tel “jó” lehet)

  2. Balássy György Szerző

    Köszönöm mindenkinek a tippeket.
    Ahogy írtam is, ez egy igencsak leegyszerűsített változata az eredeti kódnak. Az zavar benne leginkább, hogy karbantarthatatlan, vagy legalábbis egy apró, ártatlannak tűnő módosítással teljesen más eredményt tud adni. Aztán győzd debuggolni.
    Elég megcserélni a SELECT eredményhalmazának két oszlopát és máris kész a baj. Erre nem számít az ember, amikor a fejébe verik adatbázis-elméletből, hogy az oszlopok és a sorok sorrendje lényegtelen.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s