我有一个带有一些可选参数的存储过程.....我传递一个类型参数,并根据我调用相应的查询。 以下是我的查询
create procedure [dbo].[usp_InsertInfo]
@login_id varchar(500)=null,
@login_name varchar(200)=null,
@handler_name varchar(500)=null,
@city varchar(100)=null,
@email varchar(500)=null,
@img_url_http varchar(max)=null,
@img_url_https varchar(max)=null,
@token varchar(500)=null,
@login_type varchar(2)=null
as
begin
if(@login_type='F')
//code goes here
else
//code goes here
end
以下是我从控制器调用它的方式
using (Entities dbContext = new Entities())
{
var parameters = new SqlParameter[7];
parameters[0] = new SqlParameter { ParameterName = "login_id", Value = objUser.Id };
parameters[1] = new SqlParameter { ParameterName = "login_name", Value = objUser.Name };
parameters[2] = new SqlParameter { ParameterName = "handler_name", Value = objUser.ScreenName };
parameters[3] = new SqlParameter { ParameterName = "img_url_http", Value = objUser.ProfileImageUrl };
parameters[4] = new SqlParameter { ParameterName = "img_url_https", Value = objUser.ProfileImageUrlHttps };
parameters[5] = new SqlParameter { ParameterName = "token", Value = accessToken.Token };
parameters[6] = new SqlParameter { ParameterName = "login_type", Value = "T" };
List<userInfo> objUserInfo = dbContext.ExecuteStoreQuery<userInfo>("usp_InsertInfo @login_id,@login_name,@handler_name,@img_url_http,@img_url_https,@token,@login_type", parameters).ToList();
}
但是当我检查数据库中的值时,值会搞砸......
在img_url_http中,我得到了令牌值img_url_https我得到了类型值,依此类推。
M混淆了我出错的地方或者MVC4不支持空参数。 或者请帮助我使用可选参数
通过MVC4调用存储过程的正确方法我想使用可选参数运行此代码并执行存储过程并根据条件返回结果。
答案 0 :(得分:0)
static void CallAProcedure(int required, int? optional)
{
string connectionstring = "connection string here.";
using (SqlConnection cn = new SqlConnection(connectionstring))
{
cn.Open();
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandText = "AProcedure";
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@Required", 1);
if (optional.HasValue)
cm.Parameters.AddWithValue("@Optional", optional.Value);
cm.ExecuteNonQuery();
}
}
}