![](/img/trans.png)
[英]How to return multiple output parameters from stored procedure for C# function
[英]Sending output parameters and getting multiple datasets from Stored procedure C#
我的存儲過程:-
DECLARE @return_value int,
@Sum int,
@Total float
EXEC @return_value = [dbo].[mysamplesp]
@sd = '2014-09-23 00:00:00.000',
@ed = '2014-09-30 00:00:00.000',
@ID = '40494',
@sp = NULL,
@Ct = NULL,
@GD = NULL,
@Sum = @Sum OUTPUT,
@Total = @Total OUTPUT
SELECT @Sum as N'@Sum',
@Total as N'@Total'
SELECT 'Return Value' = @return_value
執行結果;-
數據集1-
col1 col2 col3 col4 col5
datase2-
@Sum @Total
數據集3-
return_value
我的C#實現:
Dictionary<string, object> storage = new Dictionary<string, object>();
storage.Add("sd", "2014-09-23 00:00:00.000");
storage.Add("ed", "2014-09-30 00:00:00.000");
storage.Add("ID", "40494");
storage.Add("Sp", null);
storage.Add("Ct", null);
storage.Add("GD", null);
storage.Add("Sum", null);
storage.Add("Total", null );
var spReturn = new Data(Data.DBKEY).ExecuteSotredProcedure("mysamplesp", storage);
。 。 。
public int ExecuteSotredProcedure(string qryName, Dictionary<string, object> parameters)
{
using (SqlConnection con = new SqlConnection(_conStr))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(qryName, con))
{
cmd.CommandType = CommandType.StoredProcedure;
foreach (var key in parameters.Keys)
{
cmd.Parameters.AddWithValue(key, parameters[key] ?? DBNull.Value);
}
return cmd.ExecuteNonQuery();
}
}
}
問題1:如何使用C#中的字典將輸出參數發送到Sp? 可能嗎?
問題2:如何從SP中獲取多個數據集?
對於Q1,您應該將sql參數的direction
指定為ParameterDirection.Output
對於Q2,請使用SqlDataReader
var cmd = sqlConnection.CreateCommand();
cmd.CommandText = "[dbo].[mysamplesp]";
cmd.CommandType = CommandType.StoredProcedure;
sqlConnection.Open();
var reader = cmd.ExecuteReader();
// process first dataset
reader.NextResult();
// process second dataset
// etc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.