כדי לקרוא לשתי פרוצדורות אפשר להשתמש באחת מהדרכים הנפוצות האלה:
1. קריאה סדרתית לפרוצדורות.
using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("StoredProcedure1", conn)) { cmd.CommandType = CommandType.StoredProcedure; // Set parameters for cmd here cmd.ExecuteNonQuery(); } using (SqlCommand cmd = new SqlCommand("StoredProcedure2", conn)) { cmd.CommandType = CommandType.StoredProcedure; // Set parameters for cmd here cmd.ExecuteNonQuery(); } }
2. עטיפת 2 הפוצדורות בשלישית ב-SQL וקריאה לפרוצדורה העוטפת.
קוד ה-SQL יראה כך:
CREATE PROCEDURE dbo.WrapperProcedure AS BEGIN EXEC dbo.StoredProcedure1; EXEC dbo.StoredProcedure2; END;
קוד ה-API יקרא לפרוצדורה:
using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("WrapperProcedure", conn)) { cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); } }
אם יש צורך לשלוח פרמטרים לשתי הפרוצדורות, נגדיר את כל הפרמטרים ב-API ונקבל לכל פרוצדורה את הפרמטרים שמתאימים לה.
כל פרוצדורה מקבלת את הפרמטרים שלה:
CREATE PROCEDURE dbo.WrapperProcedure @Param1 DataType1, @Param2 DataType2 AS BEGIN -- Call the first stored procedure EXEC dbo.StoredProcedure1 @Param1; -- Call the second stored procedure EXEC dbo.StoredProcedure2 @Param2; END;
בקריאה של ה-API כל הפרמטרים נשלחים יחד:
using System.Data; using System.Data.SqlClient; // ... using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("WrapperProcedure", conn)) { cmd.CommandType = CommandType.StoredProcedure; // Add parameters for the wrapper procedure cmd.Parameters.Add(new SqlParameter("@Param1", valueForParam1)); cmd.Parameters.Add(new SqlParameter("@Param2", valueForParam2)); // Execute the wrapper procedure cmd.ExecuteNonQuery(); } }