2014-01-07 73 views
1

這是我的存儲過程的簽名:不添加參數到存儲過程

Create Procedure sp_Member_Account_Select_By_User_And_Membership_Year 
(
    @Username varchar(150), 
    @Membership_Year varchar(10) 
) 
AS 

在asp.net C#代碼

command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = vUsername; 
command.Parameters.Add("@Membership_Year", SqlDbType.VarChar,10).Value = "2014"; 

SqlDataReader dr; 
dr = command.ExecuteReader(); 

錯誤消息:

程序或功能 'sp_Member_Account_Select_By_User_And_Membership_Year'期望 參數'@Username',這是不提供。

我試過不同的方式添加參數,包括Addwithvalue,但沒有成功。我錯過了什麼?

+0

你能提供與此相關的存儲過程調用完整的C#代碼? –

+1

也許你的vUsername爲空?嘗試插入一些字符串手動而不是vUsername變量只是爲了檢查這不是問題 – chiapa

+2

您是否將命令類型設置爲'CommandType.StoredProcedure'? –

回答

2

既然你明明參數添加到命令,有兩個原因可能導致此異常:

  1. 設置命令類型CommandType.StoredProcedure

    command.ComandType = CommandType.StoredProcedure; 
    
  2. 設置用戶如果vUsername爲空,則名稱參數爲DBNull.Value

    command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = vUsername ?? DBNull.Value; 
    
0

可能vUsername爲空?當您需要將null傳遞給存儲過程時,您需要傳遞常量DBNull.Value而不是null

喜歡的東西

command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = 
     (vUsername == null) ? DbNull.Value : (object) vUsername;