.Net 调用存储过程取到return的返回值
1.存储过程
SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO --============================================= --Author:<Author,,Name> --Createdate:<CreateDate,,> --Description:<Description,,> --============================================= alterPROCEDUREGetOrderLine @orderIdvarchar(50) AS BEGIN --SETNOCOUNTONaddedtopreventextraresultsetsfrom --interferingwithSELECTstatements. SETNOCOUNTON; select*fromorderLinewhereOrderId=@orderId; return123; END GO
注意存储过程只能返回int类型,如果返回一个字符串,将会报类型转化错误
2后台调用
DataTabledt=newDataTable();
stringconnStr=System.Configuration.ConfigurationManager.ConnectionStrings["BLL.Properties.Settings.ShoppingDBConnectionString"].ToString();
using(SqlConnectionconn=newSqlConnection(connStr)){
stringcallName="GetOrderLine";
using(SqlCommandcommand=newSqlCommand(callName,conn))
{
command.CommandType=CommandType.StoredProcedure;
SqlParameter[]sps={newSqlParameter("@orderId",SqlDbType.VarChar,50),
newSqlParameter("@return",SqlDbType.Int)//注册返回值类型
};
sps[0].Value="43c7cf15-6b2f-4d18-92b2-dbe827f30dfc";
sps[1].Direction=ParameterDirection.ReturnValue;//返回参数类型
command.Parameters.AddRange(sps);
using(SqlDataAdaptersda=newSqlDataAdapter()){
sda.SelectCommand=command;
sda.Fill(dt);
//Console.WriteLine(sda.GetFillParameters()[1].Value);
Console.WriteLine(sps[1].Value);//取到返回的值
}
}
}
if(dt.Rows.Count>0){
for(inti=0;i<dt.Rows.Count;i++)
{
Console.WriteLine(dt.Rows[i]["ProductId"]+":"+dt.Rows[i]["ProductPrice"]+":"+dt.Rows[i]["ProductCount"]);
}
}
Console.ReadLine();