Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218

    consiglio per una stored p

    salve ragazzi,
    vorrei il vostro aiuto per cercare di risolvere questo problema, o meglio... vorrei un suggerimento su come affrontarlo.

    uso sql sever ed ho un database che è un'anagrafica.. ho alcune tabelle così collegate:

    cittadino<-----abita_in----->domicilio
    cittadino<-----vive in----->nucleo familiare

    cioè cittadino si collega a domicilio e nucleo familiare, ma tra nucleo familiare e domicilio non x'è collegamento diretto...

    ebbene, io ho realizzato il caso in cui un cittadino cambia domicilio.. ora vorrei affrontare l'evenienza in cui un'intera famiglia cambia casa...
    l'approccio che ho seguito è questo: conto i componenti di una famiglia, e per ognuno cambio casa.

    il conteggio è ok, il cambio famiglia lo so fare(update)... il problema è la scansione di ciò che trova, cioè fare l'update in base ai codici persona che trova... (un po' come un ciclo for o un foreach)

    questa è la stored che ho abbozzato:
    ALTER PROCEDURE dbo.spostam_famiglia
    (
    @nf int
    )

    AS
    declare @num_comp as integer //così conto i record in una famiglia
    set @num_comp=''
    select @num_comp=(select count(*) from ruolo_in_nf_o_conviv where cod_nucleo_familiare=@nf)

    begin
    if @num_comp !=0 //se ho componenti in nf

    select cod_persona from vive_in where cod_nf=@nf //trovo tutti i componenti di un nf
    //e per ognuno vorrei fare la update...ma come si fa a scansionarli tutti???

    //esiste il ciclo for/foreach per le sp?
    /si possono usare gli array in questo contesto?

    else print 'ciao' //è solo per motivi di test
    end

    RETURN


    qualcuno di voi potrebbe darmi un consiglio o suggerimento a riguardo?
    non so più come andare avanti...
    grazie in anticipo a chi mi aiuterà

  2. #2
    Utente di HTML.it L'avatar di tekanet
    Registrato dal
    Oct 2001
    Messaggi
    300
    1 - in SQL ci sono i cicli procedurali come il WHILE e si può ciclare su un recordset tramite un CURSOR.

    2- nel tuo caso, apparentemente, basterebbe una UPDATE ... WHERE ID IN (SELECT ... )
    in cui la select è quella select che ti restituisce gli ID delle persone del nucleo..

    HTH

    tK

  3. #3
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218
    ciao

    la soluzione 2 è quella che ho usato nel mio caso:grazie 1000!

    ora vorrei chiederti una cosa: se al posto della update ci fosse stata una insert?
    le insert non accettano il where... come farei ad usare la insert in caso ad esempio di creazione di un nuovo domicilio?
    con la update ho gestito il caso in cui la famiglia se ne va in una casa esistente... e se la casa fosse stata costruita da poco?

  4. #4
    INSERT ... WHERE non ha proprio senso (ragionaci).

  5. #5
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218
    sì, lo so benissimo che una insert non prevede la clausola where...cmq ho risolto... basta porre nel values della insert la variabile che accoglie i dati presi dal cursore..

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 © 2025 vBulletin Solutions, Inc. All rights reserved.