Ich benutze eine ExecuteOracleNonQuery in C#, um einen Datensatz in meine Oracle-Datenbank mit einer gespeicherten Prozedur einfügen, aber nicht scheinen die ROWID zurückzukehren.Wie bekomme ich die Rowid von einem ExecuteOracleNonQuery in C#
In C# ...
using (OracleConnection oc=
new OracleConnection(AppConfiguration.ConnectionString))
{
OracleCommand myCommand = new OracleCommand("PKG_TEST.INSERT", oc);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("p_Id", allAssets.Id);
myCommand.Parameters.AddWithValue("p_Description", allAssets.Description);
OracleString rowId;
try
{
myConnection.Open();
result = myCommand.ExecuteOracleNonQuery(out rowId);
allAssets.RowId = rowId.ToString();
}
catch(System.Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
finally
{
myConnection.Close();
}
}
return result;
Verfahren in Oracle-Paket ...
PROCEDURE insert (
p_id IN ALL_ASSETS.id%TYPE,
p_description IN ALL_ASSETS.description%TYPE
)
IS
BEGIN
INSERT INTO ALL_ASSETS
(id, description)
VALUES (p_id, p_description);
END insert;
Kann jemand Aufschluss über, wie die ROWID zurückgegeben wird, bitte?
EDIT - Ich habe jetzt den Code geändert, um wie oben zu sein, aber immer noch keine ROWID zurückgeben. Außerdem wird nur ein Datensatz eingefügt.
Danke.
Das ist, was ich dachte, weshalb ich es ursprünglich nicht erklärt hatte. Ich bekam jedoch immer noch nichts zurück. –
Sind Sie absolut sicher, dass der SP genau 1 Reihe betrifft; die Dokumentation schlägt vor, dass es möglicherweise nicht zurückgegeben wird, wenn nicht ... – Calanus
Ja, ich habe es durch verfolgt und nur ein Datensatz wird eingefügt. –