Ho una query di insert che effettua il salvataggio di un elemento di testata
all'interno di una tabella... come posso fare in modo che la query mi
ritorni l'ID di salvataggio, per poi salvare il detail?? Questo per evitare
di dover recuperare l'ID facendo un sort per ID Desc (soluzione che non mi
piace molto)


...quello che vorrei ottenere è il risultato dell'operazione (quindi se l'insert è avvenuto con successo) e l'ID dell'ultimo insert

Fin'ora sono arrivata a questo punto...

Grazie infinite per l'aiuto!


-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[st_Documenti_TestataInsert]
(
@tipodocumento varchar,
@stato varchar,
@IDClienti int,
@anno int,
@numero int...
@vEsito int OUTPUT
)

AS
-- dichiaro le variabili
declare @Errore int

-- setto i valori
set @Errore = 0
set @vEsito = 0

BEGIN TRANSACTION

SET NOCOUNT ON;

INSERT INTO OrdiniVenditaTestata (tipodocumento,stato,IDClienti,....
numprog,IDRegIva,modoreg,numpn,annopn,Tipo,tiporeg ) VALUES
(@tipodocumento,@stato,@IDClienti,.....)


SELECT SCOPE_IDENTITY()

-- Controllo esito dell'operazione
SET @Errore=@@error
if(@Errore!=0)
begin
set @vEsito = @@error
goto finally
end

-- ramo finally per commit o rollback
finally:

-- se nessun errore eseguo il commit della transazione
if (@Errore = 0) and (@vEsito = 0)
begin
-- commit della transazione della conferma corrente
commit transaction
end
else
begin
-- rollback della transazione per la conferma corrente
rollback transaction
end

return @vEsito





DBManager dbMananger = new DBManager();
int spResult = -1;
string qry = "st_Documenti_DettaglioRigheInsert";
dbMananger.OpenConn();
SqlCommand cmd = new SqlCommand(qry);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = qry;


cmd.Parameters.Add(new SqlParameter("@tipodocumento",
tipodocumento));
cmd.Parameters.Add(new SqlParameter("@stato", Stato));
cmd.Parameters.Add(new SqlParameter("@IDClienti",
IDClienti));
cmd.Parameters.Add(new SqlParameter("@anno", anno));
cmd.Parameters.Add(new SqlParameter("@numero", numero));
....


//Gestione parametro di OUTPUT
SqlParameter outputParameter = new SqlParameter();
outputParameter.ParameterName = "@vEsito";
outputParameter.SqlDbType = SqlDbType.Int;
outputParameter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outputParameter);

cmd.Connection = dbMananger.dbconn;
cmd.ExecuteNonQuery();
spResult = Convert.ToInt16(cmd.Parameters["@vEsito"].Value);
dbMananger.CloseConn();