In Oracle PL/SQL, la variabile di sistema per memorizzare il numero di cancellati/inserite/righe aggiornate è:
Dopo un'istruzione DELETE/INSERT/UPDATE, e prima di commettere, è possibile memorizzare SQL% ROWCOUNT in una variabile di tipo NUMBER. Ricordare che COMMIT o ROLLBACK ripristina su ZERO il valore di SQL% ROWCOUNT, quindi è necessario copiare il valore SQL% ROWCOUNT in una variabile PRIMA COMMIT o ROLLBACK.
On 4/7/07, Karthikeyan Sundaram ha scritto:
Ciao,
I am using 8.1.0 postgres and trying to write a plpgsql block. In that I am inserting a row. I want to check to see if the row has been
inserito o no.
in Oracle possiamo dire come questo
begin
insert into table_a values (1);
if sql%rowcount > 0
then
dbms.output.put_line('rows inserted');
else
dbms.output.put_line('rows not inserted');
end if; end;
C'è qualcosa uguale a SQL% rowcount in postgres? Per favore aiuto.
saluti skarthi
Forse:
http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW
Clicca sul link qui sopra, vedrete questo contenuto:
37.6.6. Ottenere lo stato dei risultati Esistono diversi modi per determinare l'effetto di un comando. Il primo metodo consiste nell'utilizzare il comando GET DIAGNOSTICA, che ha la forma:
GET variabile DIAGNOSTICA = item [...]; Questo comando permette recupero di indicatori di stato del sistema. Ogni elemento è una parola chiave che identifica un valore di stato da assegnare alla variabile specificata (che dovrebbe essere del tipo di dati corretto per riceverlo).Gli attuali articoli di stato sono ROW_COUNT, il numero di righe elaborate da l'ultimo comando SQL inviato al motore SQL e RESULT_OID, l'OID dell'ultima riga inserita dal più recente comando SQL. Notare che RESULT_OID è utile solo dopo un comando INSERT in una tabella contenente OID.
Un esempio:
DIAGNOSTICA GET integer_var = ROW_COUNT; Il secondo metodo per determinare gli effetti di un comando è controllare la variabile speciale denominata FOUND, che è di tipo booleano. FOUND inizia falso entro ogni chiamata di funzione PL/pgSQL. Viene impostato da ciascuno dei seguenti tipi: di dichiarazioni:
Un'istruzione SELECT INTO imposta FOUND true se viene assegnata una riga, false se non viene restituita alcuna riga.
Un'istruzione PERFORM imposta FOUND true se produce (e scarta) una riga , false se non viene generata alcuna riga.
Le istruzioni UPDATE, INSERT e DELETE impostano FOUND true se è interessata almeno una riga , false se nessuna riga è interessata.
Un'istruzione FETCH imposta FOUND true se restituisce una riga, false se non viene restituita nessuna riga .
Un'istruzione FOR imposta FOUND true se itera una o più volte, altrimenti false. Questo vale per tutte e tre le varianti dell'istruzione FOR (loop FOR intero, loop FOR record-set e record di record dinamico FOR per i cicli ). FOUND è impostato in questo modo quando termina il ciclo FOR; all'interno dell'esecuzione del loop , FOUND non viene modificato dall'istruzione FOR, , sebbene possa essere modificato dall'esecuzione di altre istruzioni all'interno del corpo del loop all'interno di .
FOUND è una variabile locale all'interno di ciascuna funzione PL/pgSQL; eventuali modifiche influiscono solo sulla funzione corrente.
Sì, ROW_COUNT è quello che ti serve. –
fantastico, grazie! –
Non è affatto utile citare il manuale. I collegamenti vanno bene. Ma vengo a StackOverflow per esempi. – Neil