in una stored procedure attivata da un trigger ho un cursore... che mi sta facendo impazzire... uff..
in pratica lanciando la SP esternamente (col l'EXEC) non ho problemi.. mentre lanciandola dal trigger non va..
dopo varie prove ho capito che è proprio il cursore che blocca tutto..
ma come posso risolvere???
il cursore mi serve perchè devo ciclare in una tabella e per ogni record devo fare una determinata operazione.. ci fosse un altro modo per ciclare .. lo utilizzerei volentieri..
sintetizzando un pò .. il codice interessato è questo..
DECLARE Avvocati CURSOR
LOCAL
SCROLL
FOR
SELECT ID_ANAGRAFICA
FROM VALBO_ISCRIZIONE_DIF_ORDINARI
ORDER BY ID_ANAGRAFICA
OPEN Avvocati
DECLARE @idanagrafica varchar(9)
-- ciclo giorni da 1 a X
WHILE @conta_giorni <= @totale_giorni BEGIN
-- ogni giorno devo assegnare un record ad X avvocati
WHILE @avvocato < @avvocati_al_giorno BEGIN
IF @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Avvocati INTO @idanagrafica
END
ELSE
BEGIN
FETCH FIRST FROM Avvocati INTO @idanagrafica
END
-- INSERT ...
set @avvocato = @avvocato + 1
END
-- ogni avvocato deve raggiungere X record dopo N giorni
-- finchè l'avvocato Y non ha X record.. torno indietro di X avvocati..
IF @conta_giorni_per_avvocato < @giorni_per_avvocato
BEGIN
-- torno indietro di N avvocati
SET @avv = (-1 * @avvocato)
FETCH RELATIVE @avv FROM Avvocati INTO @idanagrafica
SET @avvocato = 0
END
set @conta_giorni = @conta_giorni + 1
END
CLOSE Avvocati
DEALLOCATE Avvocati