Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307

    Un esempio di stored procedure per operare sequenzialmente su una tabella

    Buongiorno a tutti,
    ho una tabella di SQL Server così fatta:

    Ident
    Nome
    Ident2
    Nome2

    e devo operare sequenzialmente sulla tabella così: per ogni riga, prendo il valore di Ident2, cerco nella colonna Ident se c'è un record di valore corrispondente, e copio quel nome in Nome2.
    Visto che è un pò complicato, faccio un esempio; da:

    Ident Nome Ident2 Nome2
    2 Pippo 1
    3 Pluto 5
    1 Ciro 3
    4 Gennaro 2

    devo ottenere:

    Ident Nome Ident2 Nome2
    2 Pippo 1 Ciro
    3 Pluto 5
    1 Ciro 3 Pluto
    4 Gennaro 2 Pippo

    quindi faccio: Ident2 è uguale ad 1 -> cerco 1 nella colonna Ident -> lo trovo, ad esso corrisponde il nome Ciro -> copio "Ciro" in Nome2 e passo al record successivo;
    Ident2 è uguale a 5 -> cerco 5 nella colonna Ident -> non lo trovo -> lascio a NULL Nome2 e passo al record successivo;
    ...........
    Ident2 è uguale a 2 -> cerco 2 nella colonna Ident -> lo trovo, ad esso corrisponde il nome Pippo -> copio "Pippo" in Nome2 e termino perchè è l'ultimo record.
    Spero di ottenere aiuto, kisses,

    Nat

  2. #2
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    non basta una query di update?

    update tabella set nome2 = nome
    where ident2 = ident
    Tutti vogliono parlare, nessuno sa ascoltare.

  3. #3
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307
    l'update andrebbe a valorizzare solo quei Nome2 per i quali Ident ed Ident2 coincidono

    Io ho quasi risolto, ovvero: ho immesso un campo contatore nella tabella, ed uso questa stored procedure:

    CREATE PROCEDURE spCercaNome AS

    declare @counter int
    declare @numRecord int
    declare @Ident2 float
    declare @Ident int
    declare @Nome nvarchar(255)
    declare @dummy int

    set @counter = 1
    select @numRecord = (select count(*) from tabella)

    while @counter <= @numRecord
    begin
    select @Ident2 = (select Ident2 from tabella where Id = @counter)
    select @Nome = (select Nome
    from tabella
    where Ident = @Ident2)
    /* exec @dummy = (insert into tabella(Nome2)
    values(@Nome)
    where Id = @counter) */
    set @counter = @counter + 1
    end
    GO

    e funzionerebbe tutto, se..... MA COME FACCIO A FARE UNA INSERT IN UNA STORED PROCEDURE?????????
    Una volta che so come si fa, sostituisco al codice commentato ed il tutto è fatto.
    Kisses,

    Nat

  4. #4
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307
    ehm.... perdono perdono.... ovviamente al posto della insert è da usare una update
    Kisses,

    Nat

  5. #5
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    a mio parare basta la query di update che ti ho passato: la provi?
    Tutti vogliono parlare, nessuno sa ascoltare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.