如何为表值参数的空值发送到在C#中的存储过程?发送空值到存储过程
回答
使用这样
command.Parameters.AddWithValue("@param", DBNull.Value);
这里是关于同一主题
How to pass a null variable to a SQL Stored Procedure from C#.net code
你可以通过链接一个很好的链接。
Using DBNull.Value with SqlParameter without knowing sqlDbType?
您可以添加null作为默认放慢参数值,不,如果你希望它是空发送任何价值
例如:
create procedure sp_name(@param1 varhcra(10), @param2 varchar(10)=null)
C#
command.Parameters.AddWithValue("@param1", "value1");
//dont pass any value for param2, it is considered null
** Do不要**为你自己的存储过程使用'sp_'前缀!该前缀是**由Microsoft **保留供其自己使用。 –
使用DBNull.Value
通过NULL
。
有使用DBNull.Value虽然小的问题。比方说,我在名为IO的存储过程中有一点点。
的存储过程CREATE PROCEDURE [dbo].[stp_Check]
@IO BIT
在
然后,在代码我添加参数如下。
object parameter = new SqlParameter("IO", true); //using false is the same.
然后我称之为存储过程
_repositary.DataContext.Database.SqlQuery<CallDetail>("exec stp_Check @IO", parameter)();
这里_repository是我DataRepository类上下文。知道它会执行sp就足够了。
你能赶上使用SQL Server Profiler呼叫。这将生成如下。
declare @p24 int
set @p24=7
exec sp_executesql N'exec stp_Check @IO', --parameter passed
N'@IO bit', -- parameter with the type passed
@IO=1 --parameter value used when executing the sp
select @p24
问题是这样的。当您使用DBNull.Value创建参数时,如下所示。
object parameter = new SqlParameter("IO", (object)DBNull.Value);
从SQL Server Profiler可以找出什么是
declare @p24 int
set @p24=7
exec sp_executesql N'exec stp_Check @IO', --parameter passed
N'@IO nvarchar(4000)', -- the passes type is not boolean
@IO=NULL --parameter value is NULL
select @p24
真,这将work.But这不是什么打算。我更喜欢
using System.Data.SqlTypes;
您可以按如下方式传递null。
object parameter = new SqlParameter("IO", System.Data.SqlTypes.SqlBoolean.Null);
然后请求是这样的。
declare @p24 int
set @p24=7
exec sp_executesql N'exec stp_Check @IO', --parameter passed
N'@IO bit', -- the passes type is boolean
@IO=NULL --parameter value is NULL
select @p24
有所有的SQLType如int,BIGINT,日期时间等,希望这有助于空值。干杯。 :)
- 1. 发送空列表到存储过程
- 2. 如何将空值发送到存储过程?
- 3. 发送参数到存储过程vb.net
- 4. 将参数发送到存储过程
- 5. 发送DataTable到存储过程从C#
- 6. 春季发送Blob到存储过程
- 7. 发送参数到存储过程
- 8. 存储过程空值
- 9. Oracle:Java存储过程发送JMS消息
- 10. 从存储过程发送邮件
- 11. SQL Server:存储过程并发送dbmail
- 12. INSERT存储过程不接受空值
- 13. MYSQL存储过程给出空值
- 14. 存储过程返回空值
- 15. 存储过程返回空值
- 16. 存储过程返回空值int
- 17. 将asp页面的值发送到SQL存储过程并返回值?
- 18. 插入SQL存储过程值到另一个存储过程
- 19. 存储过程 - 将两个值传递到存储过程
- 20. 向MySQL存储过程发送相同字段的值列表
- 21. 在存储过程中发送列名和值作为参数
- 22. 发送多个选定值逗号分隔的存储过程
- 23. 发送日期时间值存储过程
- 24. 是否有可能从.NET应用程序发送空值到sybase DB中的存储过程?
- 25. 将SELECT的结果发送到MySQL中的存储过程
- 26. 发送参数到存储过程在SQL Server 2008中
- 27. 发送加密数据到存储过程
- 28. 将参数发送到存储过程后面的代码
- 29. 将SQL发送到SQL存储过程中的打印机
- 30. 访问:从文本框发送参数到存储过程
的可能重复[如何传递一个空变量从C#存储过程SQL。网络代码](http://stackoverflow.com/questions/1207404/how-to-pass-a-null-variable-to-a-sql-stored-procedure-from-c-net-code) – krock