Ciao ragazzi, torno ad assillarvi con un problema che mi sta facendo diventare scemo. Ho 2 stored procedure, che servono ciascuna per creare un record in una tabella chiamata Aliases in cui la chiave primaria autoincrementale è IDAlias (oltre ad aggiungere altre entry in altre tabelle). Le 2 stored procedure sono le seguenti:
ecodice:ALTER PROCEDURE spDOTNETCreaNuovaPersona ( @IDAlias int OUTPUT, @Alias varchar(255), @IDPersona int OUTPUT ) As begin transaction INSERT INTO dbo.Aliases (Alias) VALUES (@Alias) SET @IDAlias = SCOPE_IDENTITY() INSERT INTO dbo.Persone (IDAlias, SessoMaschile, Titolo) VALUES (@IDAlias, 1 ,'Scegli') SET @IDPersona = @IDAlias commit transaction
Prese singolarmente le due sp funzionano, il problema è quando provo ad eseguire prima spDOTNETCreaNuovaPersona e poi l'altra. Infatti la prima viene eseguita correttamente, la seconda invece mi restituisce questo bel messaggio di errore:codice:ALTER PROCEDURE spDOTNETCreaPersonaProfessionista ( @IDAlias int OUTPUT, @IDPersona int, @Sigla varchar(3), @Alias varchar(255), @RagioneSociale varchar(128), @IDAzienda int OUT ) AS Begin transaction INSERT INTO dbo.Aliases (Alias) VALUES (@Alias) SET @IDAlias = SCOPE_IDENTITY() INSERT INTO dbo.Aziende (IDAlias,RagioneSociale) VALUES (@IDAlias,@RagioneSociale) INSERT INTO dbo.Fornitori (IDAzienda) VALUES (@IDAlias) INSERT INTO dbo.BeniEServizi (IDFornitore,Settore) VALUES (@IDAlias,'') INSERT INTO Professionisti (IDPersona,IDFornitore,Sigla) VALUES (@IDPersona,@IDAlias,@Sigla) SET @IDAzienda = @IDAlias Commit transaction
Impossibile inserire la riga di chiave duplicata nell'oggetto 'Aliases' con indice univoco 'IX_Aliases'.
Impossibile inserire il valore Null nella colonna 'IDAlias, tabella 'dbo.Aziende'. La colonna non supporta valori Null. INSERT avrà esito negativo.
Impossibile inserire il valore Null nella colonna 'IDAzienda, tabella 'dbo.Fornitori'. La colonna non supporta valori Null. INSERT avrà esito negativo.
Impossibile inserire il valore Null nella colonna 'IDfornitore, tabella 'dbo.BeniEServizi'. La colonna non supporta valori Null. INSERT avrà esito negativo.
Impossibile inserire il valore Null nella colonna 'IDFornitore, tabella 'dbo.Professionisti'. La colonna non supporta valori Null. INSERT avrà esito negativo.
L'istruzione è stata interrotta.
L'istruzione è stata interrotta.
L'istruzione è stata interrotta.
L'istruzione è stata interrotta.
L'istruzione è stata interrotta.
Come ho già detto, se ne lancio solo 1 qualsiasi delle due, questa funziona, ma io avrei bisogno di lanciarne prima una e poi l'altra. Può dipendere da come le lancio da codice?
codice:Dim myConnectionString As String myConnectionString = "xxxxxxxxxxxxxxxxxxxxxxxxxxx" Dim myConnection As System.Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(myConnectionString) Dim cmd As New Data.SqlClient.SqlCommand("spDOTNETCreaNuovaPersona", myConnection) cmd.CommandType = Data.CommandType.StoredProcedure cmd.Parameters.AddWithValue("@Alias", Me.TBAlias.Text.Replace("'", "''")) cmd.Parameters.AddWithValue("@IDAlias", "") Dim workParam As Data.SqlClient.SqlParameter workParam = cmd.Parameters.Add("@IDPersona", Data.SqlDbType.Int, 32) workParam.Direction = Data.ParameterDirection.Output myConnection.Open() cmd.ExecuteNonQuery() Dim ID As Integer = cmd.Parameters("@IDPersona").Value myConnection.Close()Grazie per l'aiuto che (sperocodice:Dim myConnectionString2 As String myConnectionString2 = "xxxxxxxxxxxxxxxxxxxxxxxxxxx" Dim myConnection2 As System.Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(myConnectionString2) Dim cmd1 As New Data.SqlClient.SqlCommand("SpDOTNETCreaPersonaProfessionista", myConnection2) cmd1.CommandType = Data.CommandType.StoredProcedure cmd1.Parameters.AddWithValue("@IDAlias", "") cmd1.Parameters.AddWithValue("@Sigla", Me.TBSiglaProfessionista.Text) cmd1.Parameters.AddWithValue("@IDPersona", Me.FormView1.DataKey.Value) cmd1.Parameters.AddWithValue("@Alias", Me.TBAlias.Text.Replace("'", "''")) cmd1.Parameters.AddWithValue("@RagioneSociale", Me.TBRagioneSociale.Text) Dim workParam As Data.SqlClient.SqlParameter workParam = cmd1.Parameters.Add("@IDAzienda", Data.SqlDbType.Int, 32) workParam.Direction = Data.ParameterDirection.Output myConnection2.Open() cmd1.ExecuteNonQuery() Dim ID As Integer = cmd1.Parameters("@IDAzienda").Value myConnection2.Close()) mi darete!

) mi darete!
Rispondi quotando
