2013-06-18 61 views
3

我的存儲過程是這樣的:如何將空值發送到存儲過程?

CREATE PROCEDURE [dbo].[insertCompList_Employee] 
    @Course_ID int, 
    @Employee_ID int, 
    @Project_ID int = NULL, 
    @LastUpdateDate datetime = NULL, 
    @LastUpdateBy int = NULL      
AS 
BEGIN 
    SET NOCOUNT ON 

    INSERT INTO db_Competency_List(Course_ID, Employee_ID, Project_ID, LastUpdateDate, LastUpdateBy) 
    VALUES (@Course_ID, @Employee_ID, @Project_ID, @LastUpdateDate, @LastUpdateBy) 
END 

我的asp.net VB代碼背後如下:

dc2.insertCompList_Employee(
    rdl_CompList_Course.SelectedValue, 
    RadListBox_CompList_Select.Items(i).Value.ToString, 
    "0", 
    DateTime.Now, 
    HttpContext.Current.Session("UserID") 
) 

我想插入一個null值的Project_ID代替0

我已嘗試NULL,'NULL'但它返回錯誤。

+1

您是否嘗試過通過空不帶引號或通過DBNull.Value – Arun

+0

是的,我曾試圖DBNull.Value , 空值, 」」。但它不起作用 –

回答

1

最後我得到了解決辦法...

我使用可空類型的PROJECT_ID。 其聲明如下:

Dim pid As System.Nullable(Of Integer) 

,然後後面的代碼通過存儲過程插入數據

dc2.insertCompList_Employee(
rdl_CompList_Course.SelectedValue, 
RadListBox_CompList_Select.Items(i).Value.ToString, 
pid, 
DateTime.Now, 
HttpContext.Current.Session("UserID")) 
1

我沒有看到你正在轉換的值到參數的代碼,但就是不參數添加到參數採集,如果它應該爲空。只要存儲過程中有默認值,在你的情況下爲null就可以正常工作。

if projectid <> 0 then 
    cmd.addwithvalue("@ProjectId",projectid) 
end if 
相關問題