Avatar billede niconhil Nybegynder
13. oktober 2009 - 11:20 Der er 2 kommentarer

CURSORS VS. MERGE FUNCTION

Hej,
Jeg er ny i T-sql verdenen, og har forsøgt mig med nogle forskellige løsninger på min problemstilling. Håbede at kunne anvende MERGE da flere har skevet at dette er den rigtige løsning til at både INSERTE, UPDATE og DELETE een og samme arbejdsgang, og samtidig ikke anvende CURSORs. Men skal være kompatibel med både SQL Server 2005/08

Problemstilling: skal lave en sp der kan følgende..

"replikering af data i samme tabel på samme database, hvor "dataset" afgør i hvilket "regnskab" data ligger.

Tabel: InventTable (lagerkartotek)

psodukode:

while Select Itemnumber,Itemname,.. from InventTable AS Basedata
  index itemnumberIdx   
  where dataset = 'dat'
{
    while select dataset from sysinfo where dataset <> 'dat'
    {
        select inventTable forupdate AS InventUpd
          where inventUPd.Itemnumber = BaseData.ItemNumber
            and InventUpd.dataset    = sysinfo.dataset;

          if not inventUpd.Rownumber
          {
              // INSERT
             
          }
          else
          {
              // UPDATE
          }
    }
}

Hvorledes skrives en sp optimalt for denne opgave? og kan det overhovedet lade sig gøre ved anvendelse af MERGE?
I de eksempler jeg har læst er det forskellige tabeller der sammenlignes, og ikke som i mit tilfælde samme tabel hvor der differensieres på feltet dataset.
Avatar billede HenrikSjang Nybegynder
13. oktober 2009 - 19:56 #1
Du skriver "Men skal være kompatibel med både SQL Server 2005/08". Her udelukker du selv merge muligheden, for det er en feature der kom med 2008.
Avatar billede niconhil Nybegynder
13. oktober 2009 - 20:09 #2
Okay..  men hvis det skal skrives til 2005 hvad er så mest optimalt?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester