Ciao ragazzi, ho 1 problema con questa stored procedure:

codice:
ALTER PROCEDURE spCreaNuovoAlias
(
		@IDAlias int OUTPUT,
		@Alias varchar(255),
		@RagioneSociale varchar(255),
		@i int,
		@IDAzienda int OUTPUT
				
	)

As
	
	begin transaction
	INSERT INTO dbo.Aliases
	(Alias) VALUES (@Alias)
	SET @IDAlias = SCOPE_IDENTITY() 
	INSERT INTO dbo.Aziende
	(IDAlias,RagioneSociale) VALUES (@IDAlias,@RagioneSociale)	

If (@i=0)
Begin
	INSERT INTO dbo.Fornitori
	(IDAzienda) VALUES (@IDAlias)	
End
ELSE If (@i=1)
	INSERT INTO dbo.Clienti
	(IDAzienda) VALUES (@IDAlias)

SET @IDAzienda = SCOPE_IDENTITY()

commit transaction
Dovrei riuscire a inserire nella tabella clienti (per il momento a @i do sempre il valore 1) e ottenere in uscita il numero l' IDAzienda creato. La SP funziona bene, cioè crea un record nella tabella Aziende e una nella tabella Clienti con lo stesso ID, ma quando provo a recuperare l'IDAzienda creato, questo è sempre 0.
Vi incollo il codice VB.NET:

codice:
 Dim myConnectionString As String
            myConnectionString = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
            Dim myConnection As System.Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(myConnectionString)

            Dim cmd As New Data.SqlClient.SqlCommand("spCreaNuovoAlias", myConnection)
            cmd.CommandType = Data.CommandType.StoredProcedure
            cmd.Parameters.AddWithValue("@Alias", Me.TBAlias.Text)
            cmd.Parameters.AddWithValue("@IDAlias", "")
            cmd.Parameters.AddWithValue("@RagioneSociale", Me.TBRagioneSociale.Text)
            cmd.Parameters.AddWithValue("@i", 1)
            Dim IDAzienda As New Data.SqlClient.SqlParameter("@IDAzienda", Data.SqlDbType.Int, 32, Data.ParameterDirection.Output)
            cmd.Parameters.AddWithValue("@IDAzienda", "")

            myConnection.Open()
            cmd.ExecuteScalar()

            Dim ID As Integer = Convert.ToInt32(IDAzienda.Value)
            myConnection.Close()
A questo punto ID è 0, invece che l'ultimo ID creato. Cosa sbaglio secondo voi?