Welcome to Sign in | Help
in Search

Cursors

Last post 10-17-2006, 10:29 AM by ggciubuc. 3 replies.
Sort Posts: Previous Next
  •  10-17-2006, 12:19 AM 404

    Cursors

    Cat m-am straduit dar nu am reusit sa inteleg notiunea de cursor.Ce sunt si la ce ar fi folositi?Multumesc pentru celelalte raspunsuri la intrebarile mele poate prea simple pentru voi dar pe mine m-au ajutat foarte mult sa inteleg lucruri pe care nu le cunosteam.


    Sorin Titu
    MCITP Database Administrator
    MCITP Enterprise Administrator
    Filed under:
  •  10-17-2006, 9:44 AM 406 in reply to 404

    Re: Cursors

    T-SQL lucreaza cu record set-uri adica "multimi de inregistrari" (sau set de rezultate) intr-o traducere libera. Programatorii sunt obisnuiti cu o abordare iterativa si atunci s-au introdus cursoarele care permit parcurgerea rand cu rand a unui set de rezultate.

    De cele mai multe ori cursoarele pot fi evitate si este de dorit sa facem asta din motive de performanta.

    Ca exemplu:

    USE tempdb;

    GO

    CREATE TABLE Intrebari (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,

                                        TextIntrebare VARCHAR(MAX));

    GO

    INSERT INTO Intrebari(TextIntrebare) SELECT 'Tipuri de date';

    INSERT INTO Intrebari(TextIntrebare) SELECT 'Design Tabel';

    INSERT INTO Intrebari(TextIntrebare) SELECT 'Ce este un cursor';

    GO

     

    -- Exemplu cursor

    DECLARE @ID_Intrebare int, @Text_Intrebare nvarchar(MAX);

     

    -- Declaram cursorul

    DECLARE intrebari_cursor CURSOR FOR

          SELECT ID, TextIntrebare FROM Intrebari

    -- Deschidem cursorul

    OPEN intrebari_cursor

    -- Preluam primul rand in variabilele declarate

    FETCH NEXT FROM intrebari_cursor INTO @ID_Intrebare, @Text_Intrebare

    -- Cat timp avem inregistrari continuam

    WHILE @@FETCH_STATUS = 0

     BEGIN

      -- Afisam continutul variabilelor

      SELECT @ID_Intrebare, @Text_Intrebare  

      FETCH NEXT FROM intrebari_cursor INTO @ID_Intrebare, @Text_Intrebare

     END

    -- Inchidem cursorul si il dealocam

    CLOSE intrebari_cursor

    DEALLOCATE intrebari_cursor

    GO

    -- Output

    1           Tipuri de date

    (1 row(s) affected)

     

    2           Design Tabel

    (1 row(s) affected)

     

    3           Ce este un cursor

    (1 row(s) affected)

    Alternativa in acest caz este foarte simpla:

    -- Alternativa set based

    SELECT ID, TextIntrebare FROM Intrebari

     


    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
  •  10-17-2006, 10:04 AM 408 in reply to 404

    Re: Cursors

    Un cursor este un set de inregistrari, postate in memoria serverului care sunt folosite pentru diverse prelucrari in cadrul unei aplicatii; (in Access se cheama "recordset") ; este o unealta folosita preponderent de dezvoltatorii de aplicatii pe SQL. Pentru ca e in memorie, o proiectare defectuoasa a lor poate gatui serverul asa ca atentie!
    Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
  •  10-17-2006, 10:29 AM 409 in reply to 408

    Re: Cursors

    Sigur, exista cursoare si pe client (raspuns la o intrebare nepusa inca....)
    Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems