Problema Procedure PL/SQL

domenica 19 luglio 2009 - 00.23

partygirl85 Profilo | Newbie

Salve a tutti...sono nuova nel forum...ho un problema cn questa procedure sql:


create or replace procedure "RIPRISTINA_REAGENTI" (cod_reazione NUMBER, fattore NUMBER) as begin DECLARE cod REAGENTE.COD_SOSTANZA%TYPE; moli REAGENTE.NUM_MOLI%TYPE; CURSOR c1 IS SELECT COD_SOSTANZA, NUM_MOLI FROM REAGENTE WHERE COD_REAZIONE = cod_reazione; BEGIN OPEN c1; LOOP FETCH c1 INTO cod, moli; EXIT WHEN c1%NOTFOUND; UPDATE SOSTANZA SET QUANTITA = QUANTITA + fattore*moli WHERE CODICE = cod; END LOOP; CLOSE CURSORE; END; end;

Il problema è che l'update non avviene solo dove "CODICE = cod" ma viene aggiornato "QUANTITA" su tutte le tutte le righe della tabella.

Spero che qualcuno mi sappia dire qualcosa....GRAZIE

alx_81 Profilo | Guru

>Salve a tutti...sono nuova nel forum...ho un problema cn questa
>procedure sql:
ciao

di sicuro non sono esperto ORACLE, ma mi sembra di capire che questo tuo cursore sia inutile.
Non avendo i dati non ne sono certissimo, ma visto che è comunque meglio evitare ove possibile i cursori, io farei una cosa del tipo:

UPDATE SOSTANZA SET QUANTITA = QUANTITA + fattore * R.NUM_MOLI FROM SOSTANZA S INNER JOIN REAGENTE R ON R.COD_SOSTANZA = S.CODICE WHERE R.COD_REAZIONE = cod_reazione;

non so se la sintassi è corretta, non conoscendo PL/SQL, però questo mi sembra SQL normalissimo.
Provalo e facci sapere se il risultato è quello sperato..

>Spero che qualcuno mi sappia dire qualcosa....GRAZIE
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5