Welcome to Sign in | Help
in Search

Cum transmit liste pentru a fi salvate?

Last post 11-20-2008, 11:16 AM by calin.berindea. 7 replies.
Sort Posts: Previous Next
  •  11-10-2008, 12:47 PM 6110

    Cum transmit liste pentru a fi salvate?

    Salutare

    Am urmatoarea situatie: o entitate curs are o lista de traineri, pentru care, pentru fiecare este nevoie de informatie suplimentara - text. Pentru aceasta am o tabele AdditionalInfo(CourseId: int, TrainerId: int, Info varchar(1000)).
    Care ar fi cea mai buna metoda de a transmite unei proceduri stocate lista de traineri (lista de id-uri) cu informatia aferenta fiecaruia pentru a le pune in baza de date.

    Mersi
    Calin

    PS E vorba de SQL Server 2005
  •  11-10-2008, 1:07 PM 6112 in reply to 6110

    Re: Cum transmit liste pentru a fi salvate?

    Dacă ar fi vorba de SQL Server 2008, atunci răspunsul ar fi table-valued parameters.

    Dacă e vorba de SQL Server 2005, văd vreo trei variante:
    a) adaugi valorile pentru fiecare rând în parte (apelând repetat o procedură obişnuită, cu 3 parametri)
    b) concatenezi valorile respective într-o variablă nvarchar(max), separate cu un separator oarecare (dar asta e cam greu dacă una dintre coloane este varchar(1000)...)
    c) transmiţi informaţia sub formă de XML, iar în procedura stocată foloseşti metodele nodes şi value pentru a descompune XML-ul într-o formă tabelară.

    Vezi şi http://www.sommarskog.se/arrays-in-sql-2005.html pentru câteva idei interesante, referitoare la o problemă oarecum asemănătoare.

    Răzvan
  •  11-11-2008, 10:34 AM 6124 in reply to 6112

    Re: Cum transmit liste pentru a fi salvate?

    Mersi pt variante.

    mi se pare interesanta varianta c), cred ca am sa o incerc pe aceasta.
    Ai un link cu exemplu pentru elemente mai complexe nu doar o lista de id-uri?
    Cat de eficient ca si performanta e lucrul cu XML?

    Calin
  •  11-11-2008, 11:05 AM 6125 in reply to 6124

    Re: Cum transmit liste pentru a fi salvate?

    calin.berindea:

    Ai un link cu exemplu pentru elemente mai complexe nu doar o lista de id-uri?


    Nu am încercat personal, dar vezi: http://www.sqlserverandxml.com/2007/12/passing-data-table-to-sql-server-2005.html

    Răzvan

  •  11-12-2008, 12:48 PM 6144 in reply to 6124

    Re: Cum transmit liste pentru a fi salvate?

    calin.berindea:
    Mersi pt variante.

    mi se pare interesanta varianta c), cred ca am sa o incerc pe aceasta.
    Ai un link cu exemplu pentru elemente mai complexe nu doar o lista de id-uri?
    Cat de eficient ca si performanta e lucrul cu XML?

    Calin

    TSQL din 2005 implemneteaza limbajul XQUERY cu care poti manipula datele de tip XML


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  11-12-2008, 3:19 PM 6148 in reply to 6124

    Re: Cum transmit liste pentru a fi salvate?

    calin.berindea:
    Mersi pt variante.
    Cat de eficient ca si performanta e lucrul cu XML?


    Foarte bine atata timp cat nu vrei sa filtrezi dupa continutul XML-ului.
  •  11-12-2008, 6:05 PM 6152 in reply to 6124

    Re: Cum transmit liste pentru a fi salvate?

    calin.berindea:

    Cat de eficient ca si performanta e lucrul cu XML?


    Eu am folosit frecvent XML (creare de XML prin SELECT ... FOR XML PATH si consumarea lui prin nodes() si value(), pina acuma n-am avut niciodata nevoie de query()) is nu am avut niciodata probleme de performanta. Cu dimensiuni de XML decente (zeci/sute noduri) si totul in memorie timpul petrecut in procesarea XML a fost totdeauna neglijabil comparat cu timpul 'pierdut' sa se faca I/O si sa se 'flush' log-ul. E drept ca todeauna au fost scenarii de OLTP in care scriam din aceste proceduri. Daca tu citesti in aceste proceduri si nu faci nici o scriere posibil ca timpul de procesare XML sa fie masurabil, dar nu ma astept sa influenteze rezultatele.

    E recomandata daca nu ai mai lucrat cu XML in SQL Server sa treci odata prin best practices.


    http://rusanu.com
  •  11-20-2008, 11:16 AM 6197 in reply to 6152

    Re: Cum transmit liste pentru a fi salvate?

    Mersi mult pentru informatiile primite.
    Am mers pana la urma pe varianta cu XML si merge brici pana acum. Suntem inca in test dar nici nu avem date multe ce trebuie transmise.
    Am sa iau la citit link-urile recomandate.

    Calin

View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems