Sql server 2008 r2 将默认值传递到新的SqlParameter()中
如何将默认值传递到MVC4.NET中的存储过程中? 我有这个密码Sql server 2008 r2 将默认值传递到新的SqlParameter()中,sql-server-2008-r2,c#,Sql Server 2008 R2,C#,如何将默认值传递到MVC4.NET中的存储过程中? 我有这个密码 return Database.SqlQuery<Program>( "spGetProgram @p1,@p2,@p3,@p4", new SqlParameter("p1", (object)ID ?? "DEFAULT"), new SqlParameter("p2", (object)displayStart ??
return Database.SqlQuery<Program>(
"spGetProgram @p1,@p2,@p3,@p4",
new SqlParameter("p1", (object)ID ?? "DEFAULT"),
new SqlParameter("p2", (object)displayStart ?? "DEFAULT"),
new SqlParameter("p3", (object)displayLength ?? "DEFAULT"),
new SqlParameter("p4", (object)searchString ?? "DEFAULT")
).ToList();
return Database.SqlQuery(
“spGetProgram@p1、@p2、@p3、@p4”,
新的SqlParameter(“p1”,(对象)ID??“默认值”),
新的SqlParameter(“p2”,(对象)displayStart??“默认值”),
新的SqlParameter(“p3”,(对象)显示长度??“默认值”),
新的SqlParameter(“p4”,(对象)搜索字符串??“默认值”)
).ToList();
我试过了
-->错误:转换失败“默认值”
-->错误:未传递参数null
-->它传递N''值,但此值不是默认值DBNull.Value
我怎样才能做到这一点呢?我找到了一个解决方法,但它只适用于一个默认参数
return Database.SqlQuery<int>(
"spGetProgramsCount " + (searchString != null ? "@p1" : ""),
(searchString != null ? new SqlParameter("p1", searchString) : null)
).First();
我相信这是因为在过程中使用逗号,我不知道如何处理它://我找到了一个解决方法,但它只适用于一个默认参数
return Database.SqlQuery<int>(
"spGetProgramsCount " + (searchString != null ? "@p1" : ""),
(searchString != null ? new SqlParameter("p1", searchString) : null)
).First();
我相信这是因为过程中的逗号,我不知道如何处理://如果您知道形式参数的名称(正如在
CREATE procedure
中声明的那样),您可以使用您的方法,如果您对SP的调用略有不同:而不是spGetProgram@p1、@p2、@p3,@p4
dospGetProgram@formalPar1=@p1、@formalPar2=@p2、@formalPar3=@p3、@formalPar4=@p4
。这样你就可以在任何位置省略一个参数。当然还有一个更简单的方法:不用(searchString!=null?@p1,:“”)
,你可以做(searchString!=null?@p1,:“DEFAULT,”)
。我已经在数据库级别重写了它,但谢谢你,它将来会有所帮助的!如果您知道形式参数的名称(正如在CREATE PROCEDURE
中声明的那样),那么如果您调用SP的方式略有不同,您可以使用您的方法:而不是spGetProgram@p1、@p2、@p3、@p4
dospGetProgram@formalPar1=@p1、@formalPar2=@p2、@formalPar3=@p3、@formalPar4=@p4
。这样你就可以在任何位置省略一个参数。当然还有一个更简单的方法:不用(searchString!=null?@p1,:“”)
,你可以做(searchString!=null?@p1,:“DEFAULT,”)
。我已经在数据库级别重写了它,但谢谢你,它将来会有所帮助的!
When executing a command, parameters must be exclusively database parameters or values.