Ciao ragazzi, ho 1 dubbio che spero mi possiate risolvere. Ho 1 stupidissima stored procedure:
codice:
ALTER PROCEDURE spCreaReferenteDaAliasEsistente
(
@IDAlias int,
@IDReferente int OUTPUT,
@IDAzienda int
)
AS
Begin transaction
INSERT INTO rAziendePersoneReferenti (IDPersona,IDAzienda) VALUES (@IDAlias,@IDAzienda)
SET @IDReferente =SCOPE_IDENTITY()
Commit transaction
che viene richiamata così:
codice:
Dim myConnectionString As String
myConnectionString = "xxxxxxxxxxxxxxxxxxxxxxx"
Dim myConnection As System.Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(myConnectionString)
Dim cmd As New Data.SqlClient.SqlCommand("spCreaReferenteDaAliasEsistente", myConnection)
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@IDAzienda", Request.Params("IDAlias"))
cmd.Parameters.AddWithValue("@IDAlias", Me.HiddenFieldIDPersona.Value)
Dim workParam As Data.SqlClient.SqlParameter
workParam = cmd.Parameters.Add("@IDReferente", Data.SqlDbType.Int, 32)
workParam.Direction = Data.ParameterDirection.Output
myConnection.Open()
cmd.ExecuteNonQuery()
myConnection.Close()
Dim IDReferente As Integer = cmd.Parameters("@IDReferente").Value
Posso accedere tranquillamente al valore di IDReferente creato (la chiave primaria autoincrementale della tabella rAziendePersoneReferenti è IDReferente), ma purtroppo nella tabella mi vengono creati due record successivi con uguale IDAzienda e IDAlias).
La causa penso stia nella riga
codice:
SET @IDReferente =SCOPE_IDENTITY()
perchè togliendola mi viene creato solo 1 record, ma purtroppo a me serve il parametro di output IDReferente per ulteriori elaborazioni. Perchè si verifica questo problema e come posso correggerlo? Grazie!