Come si ottiene il numero di sequenza della riga appena inserito?Oracle: come ottengo il numero di sequenza della riga appena inserito?
risposta
inserire ... ritorno.
declare
s2 number;
begin
insert into seqtest2(x) values ('aaa') returning seq into s2;
dbms_output.put_line(s2);
end;
"seq" qui si riferisce al nome della colonna di cui si desidera memorizzare il valore nella variabile s2.
in python:
myseq=curs.var(cx_Oracle.NUMBER)
curs.prepare("insert into seqtest2(x) values('bbb') returning seq into :x")
curs.execute(None, x=myseq)
print int(myseq.getvalue())
Edit: come Mark Harrison ha sottolineato, questo presuppone che si abbia il controllo su come si crea l'id del record inserito. Se si ha il pieno controllo e la responsabilità per esso, questo dovrebbe lavoro ...
utilizzare una stored procedure per eseguire l'inserimento e restituire l'ID.
ad esempio: per una tabella di nomi con ID:
PROCEDURE insert_name(new_name IN names.name%TYPE,
new_name_id OUT names.id%TYPE)
IS
new_id names.id%TYPE;
BEGIN
SELECT names_sequence.nextVal INTO new_id FROM dual;
INSERT INTO names(id, name) VALUES(new_id, new_name);
new_name_id := new_id;
END;
Utilizzo di stored procedure per le operazioni CRUD è una buona idea a prescindere se non si sta utilizzando uno strato ORM, in quanto rende il codice più database- agnostico, aiuta contro gli attacchi di iniezione e così via.
La mia risposta in C#, considerando che la tabella "testtable" ha una colonna "ID" come PK con una sequenza autoincisa e il campo "testname" è un campo varchar.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Client;
using System.Data;
namespace ConsoleApplication3
{
class Program
{
public static void Main(string[] args)
{
OracleConnection cn = new OracleConnection("your connection string here");
string sql = "INSERT INTO testtable(testname) VALUES('testing2') RETURNING id INTO :LASTID";
OracleParameter lastId = new OracleParameter(":LASTID", OracleDbType.Int32);
lastId.Direction = ParameterDirection.Output;
using (OracleCommand cmd = new OracleCommand(sql, cn))
{
cn.Open();
cmd.Parameters.Add(lastId);
cmd.ExecuteNonQuery();
Console.WriteLine("Last ID: " + lastId.Value.ToString());
cn.Close();
}
Console.WriteLine();
Console.ReadKey(false);
}
}
}
- 1. Oracle - restituisce il nuovo valore chiave inserito
- 2. Come posso aumentare il numero di riga in Oracle?
- 3. Comportamento della sequenza in Oracle Merge Statements
- 4. last_number sequenza di Oracle
- 5. Ottieni l'ultimo ID inserito Sequenza
- 6. R: Come ottengo il numero di Eulero?
- 7. Come trovare il numero della porta installata di oracle 11g
- 8. ORACLE and TRIGGERS (inserito, aggiornato, cancellato)
- 9. Python Quando rilevo un'eccezione, come ottengo il tipo, il file e il numero di riga?
- 10. Recupera Oracle ultimo IDENTITY inserito
- 11. Aggiornare la colonna della tabella Oracle con il numero di riga
- 12. Come ottengo il numero di versione da una libreria statica?
- 13. come sequenza gorups numero sub
- 14. Come ottengo il contenuto testuale da BLOB in Oracle SQL
- 15. Oracle: impostazione della sequenza su un valore specifico
- 16. Come ottengo il numero di visualizzazioni in Windows?
- 17. Come ottengo il numero di campi nell'oggetto JavaScript?
- 18. Sequenza Oracle, ma in MS SQL Server
- 19. Oracle SQL: Usa sequenza inserto con Select
- 20. Come ottenere il numero di sequenza in windchill tramite API
- 21. Associare automaticamente FormView ASP.NET al record appena inserito
- 22. valore Sequenza Oracle non sono ordinati
- 23. Numero riconoscimento sequenza
- 24. java ottenere SQL numero sequenza successiva del record prima dell'inserimento
- 25. Trovare il numero mancante nella sequenza
- 26. Recupera il numero di riga della stringa in Ace Editor
- 27. Errore di sequenza in sql. Numero di sequenza non consentito qui
- 28. Quando rilevo un'eccezione, come ottengo il tipo, il file e il numero di riga del fotogramma precedente?
- 29. Verifica il numero mancante in sequenza
- 30. numero di riga di incremento quando il valore del campo cambia in Oracle