Ciao a tutti, sono abbastanza nuovo nella scrittura di store proc e ho soprattutto qualche difficoltà nella interazione con Asp.

Io dovrei tirar fuori da una stored procedure un valore (il numero di record inseriti in una tabella), e nel contempo vorrei leggere una variabile che mi fa capire che tutto è andato a posto (il COMMIT è avvenuto).

Ve la incollo qui sotto.

create procedure spNewsletter
@nRec int output

as
truncate table SendNewsletter

declare @esito int

begin tran
insert into SendNewsletter (email) (
select distinct(email) from shop.dbo.shopAcquirenti
union
select distinct(email) from dbo.Utenti
union
select distinct(email) from dbo.Mail_Nwsl
)


if @@error = 0
commit tran
select @nRec = count(email) from SendNewsletter
set @esito= 1
return @esito


if @@error <> 0
rollback tran
set @esito= 0
return @esito
GO


Ed ecco invece il codice asp:
Set con = Server.CreateObject("ADODB.Connection")
con.open = "Provider = SQLOLEDB;Data Source = (local);Initial Catalog = xxx;User ID=xxx"

set dbComm = Server.CreateObject("ADODB.Command")
dbComm.ActiveConnection = con

dbComm.CommandType = 4

dbComm.CommandText = "spNewsletter"

dbComm.Parameters.Append dbComm.CreateParameter("esito", 3, 4)
dbComm.Parameters.Append dbComm.CreateParameter("nRec", 3, 4)

dbComm.Execute

if dbComm.Parameters(0).Value = 1 then

Response.Write "Aggiornamento effettuato correttamente "
Response.Write "
Attualmente sono presenti " & dbComm.Parameters(1).Value & " indirizzi email a cui inviare la newsletter"

else
Response.Write "Aggiornamento NON effettuato "

end if



Se qualcuno potesse controllare la correttezza di quello che ho scritto.... Tengo a precisare che funziona, però mi rimane qualche dubbio... ho la netta impressione che non sia ottimizzata!

Grazie