Ciao ragazzi, ho 1 problema con questa stored procedure:
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.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
Vi incollo il codice VB.NET:
A questo punto ID è 0, invece che l'ultimo ID creato. Cosa sbaglio secondo voi?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()

Rispondi quotando