如何爲表值參數的空值發送到在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