Uo di Sqltransaction

venerdì 19 dicembre 2008 - 18.16

bluland Profilo | Guru

Salve,
sto cercando di usare SQLtransaction, su alcune Stored procedure:

ho fatto in questo modo:

SqlCommand cmd = new SqlCommand(); cmd.Connection = cmd.Connection; //cmd.Connection = cn; cmd.Connection = new SqlConnection(comm.connstring); cmd.Connection.Open(); SqlTransaction myTrans; // Start a local transaction myTrans = cmd.Connection.BeginTransaction(); // Must assign both transaction object and connection // to Command object for a pending local transaction cmd.Transaction = myTrans; try { cmd.CommandText = "SP_T2T_1"; cmd.CommandType = CommandType.StoredProcedure; //parameters cmd.Parameters.Add("@Employee_ID",SqlDbType.VarChar).Value =OPERATOR ; cmd.Parameters.Add("@Machine_Type",SqlDbType.VarChar).Value =TESTPHASE; cmd.Parameters.Add("@Machine_Name",SqlDbType.VarChar).Value =ATENAME; cmd.Parameters.Add("@Start_Date",SqlDbType.DateTime).Value = STARTDATETIME; cmd.Parameters.Add("@Deliverable_ID",SqlDbType.VarChar).Value = Deliverable_ID; cmd.Parameters.Add("@Deliverable_Issue",SqlDbType.VarChar).Value = Deliverable_Issue; cmd.Parameters.Add("@Dept_ID",SqlDbType.VarChar).Value =RUNMODE; cmd.ExecuteNonQuery(); cmd.CommandText = "SP_T2T_2"; cmd.CommandType = CommandType.StoredProcedure; //parameters cmd.Parameters.Add("@Serial_Number",SqlDbType.VarChar).Value =SERIALNUMBER ; cmd.Parameters.Add("@Machine_Type",SqlDbType.VarChar).Value =TESTPHASE; cmd.Parameters.Add("@Machine_Name",SqlDbType.VarChar).Value =ATENAME; cmd.Parameters.Add("@Start_Date",SqlDbType.DateTime).Value = STARTDATETIME; cmd.Parameters.Add("@Item_Start",SqlDbType.DateTime).Value = STARTDATETIME; cmd.Parameters.Add("@Item_End",SqlDbType.DateTime).Value = ENDDATETIME; cmd.Parameters.Add("@Item_Number",SqlDbType.VarChar).Value =PARTNUMBER; cmd.Parameters.Add("@Item_Issue",SqlDbType.VarChar).Value =VERSION; cmd.Parameters.Add("@Pass",SqlDbType.Bit).Value =TESTSTATUS; cmd.Parameters.Add("@In_Structure",SqlDbType.Bit).Value = null; cmd.Parameters.Add("@Slot_Number",SqlDbType.VarChar).Value = null; cmd.Parameters.Add("@Captive",SqlDbType.Bit).Value =null; cmd.Parameters.Add("@Parent_Item_Start",SqlDbType.VarChar).Value = null; cmd.Parameters.Add("@Parent_Serial",SqlDbType.VarChar).Value =null; cmd.Parameters.Add("@Purchase_Order",SqlDbType.VarChar).Value =null; cmd.ExecuteNonQuery(); myTrans.Commit(); return string.Empty; } catch(Exception e) { try { myTrans.Rollback(); } catch (SqlException ex) { if (myTrans.Connection != null) { return "An exception of type " + ex.GetType() + " was encountered while attempting to roll back the transaction." + ex.Message; } } return "An exception of type " + e.GetType() + " was encountered while inserting the data." + e.ToString(); } finally { cmd.Connection.Close(); }

ricevo pero' il seguente errore:

transaction procedure or function SP_T2T_2 has too many..


Idee??
--------------------
Vincenzo PESANTE
Software Engineer

Jeremy Profilo | Guru

Tra un ExecuteNonQuery e l'altro, non pulisci i parametri quindi gli uni si aggiungono agli altri.
Fammi sapere
ciao.

bluland Profilo | Guru

Si me ne ero accorto, grazie lo stesso ciao
--------------------
Vincenzo PESANTE
Software Engineer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5