כדי לקרוא לשתי פרוצדורות אפשר להשתמש באחת מהדרכים הנפוצות האלה:
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();
}
}
